如何将JPA添加到现有的eclipse项目中?

时间:2012-08-28 11:44:54

标签: java spring jpa jdbc phpmyadmin

我有一个现有的eclipse项目(JAVA应用程序),现在我创建了一个表 在xampp中 - phpMyAdmin。 在项目中,我需要以两种方式实现所有查询和数据库:

1)JDBC

2)JPA

并使用Spring机制选择其中一个。

所以我有一些问题:

1)如何将JPA添加到现有项目中?因为我读到了我需要的    有一个'persistent.xml'文件,需要位于'META-INF'文件夹中    这是我在java项目中没有的。

2)如何使用JPA连接到phpMyAdmin中的数据库?

3)如何使用Spring机制在JDBC和JPA之间进行选择?

2 个答案:

答案 0 :(得分:1)

回答问题的一部分,如果您将Hibernate用作JPA Provider,则可以通过以下方式从JPA更改为JDBC:

Session session = em.unwrap(Session.class);
session.doWork(new Work() {

    @Override
    public void execute(Connection connection) throws SQLException {
        Statement stmt = connection.createStatement();
        String nativeSql = "SELECT * FROM USERS"; 
        stmt.executeUpdate(nativeSql);
        stmt.close();
    }
});

回答问题1和2: 您只需要创建一个名为persistence.xml的文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mydb"/>
            <property name="javax.persistence.jdbc.user" value="user"/>
            <property name="javax.persistence.jdbc.password" value="pass"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
        </properties>
    </persistence-unit>
</persistence>

现在,关于Spring如何与JPA合作,我无法回答你,也许是其他人。但我希望这会有所帮助

答案 1 :(得分:0)

  

1)如何将JPA添加到现有项目中?因为我读到了我   需要有一个'persistence.xml&#39;需要位于的文件   &#39; META-INF&#39;我在java项目中没有的文件夹。

您可以手动添加。

示例

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
                 version="1.0">
         <persistence-unit name="foo" transaction-type="RESOURCE_LOCAL">
            <class>org.bar.foobar</class>
                // Add required classes here
         </persistence-unit>

        // You can add more persistence unit as per required.
 </persistence>
  

2)如何使用JPA在phpMyAdmin中连接我的数据库?

phpMyAdmin只是与MySQL合作的另一个工具,您应该为数据库而不是工具而烦恼。查看此link,您可能会发现这有用

  

3)如何使用Spring机制在JDBC和JPA之间进行选择?

JDBC是最低级别,其他是基于它构建的。在性能方面我更喜欢JDBC。当我只是想在非常频繁的基础上编辑特定列时,我更喜欢JDBC而不是JPA。

JDBC VS ORM (JPA)

JDBC的优点

  • 清洁并轻松完成小型程序
  • JDBC提供了大量数据的良好性能
  • 可以非常轻松地开发小型JDBC程序
  • 非常适合小型应用程序

JDBC的缺点

  • 如果在大型项目中使用JDBC,则不容易。有一个很大的 编程开销。
  • 程序员必须在应用程序中对事务和并发代码进行硬编码。
  • 处理JDBC连接并正确关闭连接也是一个大问题。必须正确关闭连接。
  • JDBC不适合大型应用程序

ORM的好处

  • 无需处理SQL查询以保存和检索数据
  • 简单配置
  • 用于保留业务对象的标准化API
  • 快速开发应用程序
  • 并发支持
  • 卓越的兑现支持,以提高应用程序的性能
  • 注入的交易管理
  • 可配置记录
  • 易于学习和使用

ORM的缺点

  • 大批量更新时性能下降
  • 比JDBC慢一点