如何使用JPA 2.0文件配置Hibernate?

时间:2011-05-24 14:19:50

标签: hibernate jpa persistence

Hibernate文档显示非常清晰how to configure Hibernate with XML

这是执行此操作的代码片段:

new Configuration().configure("catdb.cfg.xml")

现在如何配置Hibernate而不是hibernate配置文件,你有一个JPA 2.0配置文件?

  • 如何为META-INF / persistence.xml执行此操作?
  • 如果我的文件名为META-INF / jpa.xml,该怎么办?

这适用于Hibernate 3.6和JPA 2.0。我的最终目标是能够为文件persistence.xml中描述的类导出模式DDL,因此我不想构建SessionFactory。

    Configuration cfg = /* ??? */

    SchemaExport schemaExport = new SchemaExport(cfg);
    schemaExport.setDelimiter(";");
    schemaExport.setOutputFile("ddl.sql");
    boolean script = true, export = false, justDrop = false, justCreate = false;
    schemaExport.execute(script, export, justDrop, justCreate);

2 个答案:

答案 0 :(得分:3)

假设您通常使用持久性单元名称查找配置,您可以创建org.hibernate.ejb.Ejb3Configuration并让它返回包裹的org.hibernate.cfg.Configuration

package test;

import org.hibernate.cfg.Configuration;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class SchemaExportTest {
    public static void main(String[] args) {
        Configuration cfg = new Ejb3Configuration().configure( "persistence-unit-name", null ).getHibernateConfiguration();

        SchemaExport export = new SchemaExport(cfg);

        export.execute(true, false, false, false);
    }
}

答案 1 :(得分:0)

如果将JPA 2.0与Hibernate一起使用,则唯一需要的文件是位于META-INF目录中的persistence.xml文件。

如何配置persistence.xml文件是一个广泛的主题,取决于您正在构建的应用程序类型。

例如,我目前正在运行一个带有Hibernate 3.6.2的应用程序,它的唯一配置文件是persistence.xml,它只有以下几行

<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_2_0.xsd" version="2.0">
   <persistence-unit name="xyz" transaction-type="RESOURCE_LOCAL"/>
</persistence>

这就是我所需要的。在运行时,当我启动实体管理器工厂时,我提供了一些属性,但我打算演示的是,使用Hibernate配置JPA是多么容易。