从Hibernate迁移到Persistence

时间:2016-06-06 09:08:48

标签: java hibernate jpa

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

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

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

我知道为了创建EntityManagerFactory喜欢

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName)

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

我的问题是:如何从Hibernate Sessions迁移到JPA EntityManagers?什么是持久化配置文件中的hibernate config 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>

2 个答案:

答案 0 :(得分:1)

IDataObjectConstructorpersistence.xml非常相似。在this之后,你可以找到一个非常简单的比较。

我认为“只需创建一个文件夹META-INF并在其下面放置等效的persistence.xml ”就可以了。必须在项目的已注册源文件夹中声明文件夹,通常为hibernate.cfg.xml

然后你可以执行这一行:

src/main/resources/META-INF

答案 1 :(得分:0)

您可以通过在META-INF下创建包含src/main/java/

persistence.xml文件夹,将其转换为JPA项目

persistence.xml非常相似,这里:

<?xml version="1.0" encoding="UTF-8"?>
<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="persistence-unit-name">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>entity.Pe</class>
        <class>entity.Us</class>
        <class>entity.Te</class>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
            <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property name="hibernate.connection.url" value="jdbc:derby:D:/db/derby/svn;create=true" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="root" />
            <property name="hibernate.current_session_context_class"
                value="org.hibernate.context.internal.ThreadLocalSessionContext" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

没有选项项目的原因 - RightClick&lt;配置&lt;转换为JPA是因为您的Eclipse版本不是Enterprise Edition。对?

下载最新版本的Eclipse IDE:Eclipse Mars2 J2EE:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-jee-mars-2-win32-x86_64.zip

或者你可以帮助&lt;安装新软件; http://download.eclipse.org/releases/luna或您拥有的任何版本。

然后选择JPA和EE插件。