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

Posted

技术标签:

【中文标题】如何将 JPA 添加到现有的 Eclipse 项目?【英文标题】:How to add JPA to existing eclipse project? 【发布时间】: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的哪个机制? 【参考方案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 慢一点

【讨论】:

以上是关于如何将 JPA 添加到现有的 Eclipse 项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MFC ActiveX 控件添加到现有的 activex 项目

如何将打字稿添加到现有的 vue3 项目?

如何将 Artisan cli 添加到现有的 laravel 项目?

如何将 Sapper 添加到现有的 Svelte 项目中?

如何将 MFC 支持添加到现有的 Win32 C++ 项目?

如何将本地 VS 项目添加到现有的非空 Azure DevOps Repo