0

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

1) JDBC

2) JPA

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

所以我有一些问题:

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

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

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

4

2 回答 2

1

回答部分问题,如果您使用 Hibernate 作为 JPA 提供程序,您可以通过这种方式从 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 一起工作的方式,我无法回答你,也许是其他人。但我希望这会有所帮助

于 2012-08-28T12:11:35.013 回答
0

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 的工具,你应该关心数据库而不是工具。检查此链接,您可能会发现这很有帮助

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

JDBC 是最低级别,其他的都是建立在它之上的。在性能方面我更喜欢 JDBC。此外,当我只想非常频繁地编辑特定列时,我更喜欢 JDBC 而不是 JPA。

JDBC 与 ORM (JPA)

JDBC的优点

  • 清洁和轻松的小程序
  • JDBC 在处理大量数据时提供了良好的性能
  • 小型 JDBC 程序可以很容易地开发
  • 非常适合小型应用

JDBC的缺点

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

ORM 的好处

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

ORM的缺点

  • 大批量更新时性能下降
  • 比 JDBC 慢一点
于 2012-08-28T13:26:35.720 回答