我正在使用 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.xml
与 hibernate.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/