java - 从 hibernate 迁移到持久化

标签 java hibernate jpa

我正在使用 Maven 和 JPA 编写一个项目(不是 Web 应用程序!)。

我编写了带注释的实体类和 CRUD 服务类。但现在,我需要使用 javax.persistence.EntityManager 而不是 org.hibernate.Session 来执行这些 CRUD 操作。

我使用 Hibernate 作为 JPA 提供程序,并且在资源文件夹下的 hibernate.cfg.xml 上配置了所有内容,目前运行正常。

我知道为了创建 EntityManagerFactory

EntityManagerFactoryEntityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName),

然后我必须在 META-INF 下有 persistence.xml 但我没有这个 xml。

我的问题是:如何从 Hibernate Session 迁移到 JPA EntityManager?持久性配置文件中的 hibernate 配置 xml 文件相当于什么?

注意:我无法将我的项目转换为 JPA(没有选项)。

这是我的 hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
        <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
        <property name="hibernate.connection.url">jdbc:derby:D:/db/derby/svn;create=true</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property> <!-- org.hibernate.context.internal.ManagedSessionContextThreadLocalSessionContext -->
        <property name="hibernate.hbm2ddl.auto">create</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>

    <mapping class="entity.Pe" />
    <mapping class="entity.Us" />
    <mapping class="entity.Te" />
</session-factory>
</hibernate-configuration>

最佳答案

persistence.xmlhibernate.cfg.xml 非常相似。正在关注this你可以找到一个非常简单的比较。

我认为“只需创建一个文件夹 META-INF 并在其下放置等效的 persistence.xml”就可以解决问题。文件夹必须在项目的注册源文件夹中声明,通常是 src/main/resources/META-INF 。

然后你可以执行这一行:

EntityManagerFactory emf =
     Persistence.createEntityManagerFactory("YourPersistenceUnitNameHere")

关于java - 从 hibernate 迁移到持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653506/

相关文章:

java - 如何为柏林时区设置 ZoneOffset

java - 将变量从一个类传递到另一个类

java - 将字符串与 double 相乘

oracle - Oracle 的 Hibernate 配置问题 :ORA-12516, TNS:listener 找不到匹配的可用处理程序

java - JPA 加入多列

java - 如何更新 JTable

java - 如何为没有主键或唯一键列的表创建 JPA 实体

java - 找不到 resources/hibernate.cfg.xml

java - 将继承类型之间的关系建模为 ORM

jakarta-ee - WildFly部署: Unable to create EntityManager with SynchronizationType