【问题标题】:How to add JPA to existing eclipse project?如何将 JPA 添加到现有的 Eclipse 项目?
【发布时间】:2012-08-22 22:06:21
【问题描述】:

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

1) JDBC

2) JPA

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

所以我有一些问题:

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

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

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

【问题讨论】:

  • 让我知道Spring的哪个机制?

标签: java spring jpa jdbc phpmyadmin


【解决方案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 的工作方式,我无法回答您,也许是其他人。但我希望这会有所帮助

【讨论】:

  • 是的,我正在使用 Hibernate。但是 JDBC 和 JPA 之间的选择需要从配置文件中完成..
  • 谢谢Montolide!所以我可以创建一个常规的 xml 文件,将其命名为“persistence.xml”?它不需要位于“META-INF”文件夹中?
  • 将项目配置为JPA,有时可以使用JDBC,就像我上面做的那样,不需要做任何其他配置(只需persistence.xml)。顺便说一句,这适用于 Hibernate 4.0 及更高版本。是的,您需要将 persistence.xml 放在 META-INF 文件夹中,它只是一个普通的 xml :)
  • 我点击了项目属性,然后点击了Project Factes,在那里我选择了JPA,对吗?
  • 您不需要这样做,这只是一种简化开发的 Eclipse 方式(或 JBoss 工具?),但这样做并不能使您的项目“准备好 JPA”
【解决方案2】:

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

您可以手动添加。

样本

<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 慢一点

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2013-08-16
    • 2014-10-20
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多