java - hibernate.cfg.xml-如何合并它

标签 java hibernate

我正在上一门关于 Hibernate 和 JPA 基础知识的类(class),但我似乎找不到任何讨论论坛或任何类似的内容作为类(class)的一部分,因此请在这里提问。

讲师让我创建一个 hibernate.cfg.xml 文件并告诉我更改 hibernateUtil.java 类。这就是类现在的样子

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();


    private static SessionFactory buildSessionFactory() {
    try{
        Configuration configuration = new Configuration();
        return 
                configuration.buildSessionFactory
                (new StandardServiceRegistryBuilder().
                        applySettings(configuration.getProperties()).
                        build());
    }
    catch (Exception e){
        e.printStackTrace();
        throw new RuntimeException("Service factory creation failed");
    }
}
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

我无法弄清楚 hibernate.cfg.xml 在这里使用的位置。有一个简单的应用程序类用于测试它 公共(public)类应用程序{

    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        session.close();
    }

}

事实上,我什至从 source/main/properties 中删除了 hibernate.cfg.xml 并重新运行它(在 eclipse 中按 Ctrl-F11),我没有看到任何问题,即控制台中没有错误。

那么需要对 HibernateUtil 类进行哪些更改才能使用 hibernate.cfg.xml?

谢谢。

最佳答案

有一些方法可以使用hibernate.cfg.xml。这稍微取决于 Hibernate 版本。

你有

Configuration configuration = new Configuration();

如果你这样做

configuration.configure();

Hibernate 将读取 hibernate.cfg.xml

要构建一个 session 工厂,这已经足够了:

return new Configuration().configure().buildSessionFactory();

当然,你可以这样做:

Configuration configuration = new Configuration();
configuration.configure();

return configuration.buildSessionFactory
        (new StandardServiceRegistryBuilder().
                applySettings(configuration.getProperties()).
                build());

仅当您在 hibernate.cfg.xml 中有属性时,您才需要此 applySettings(configuration.getProperties())。但此代码仅适用于 Hibernate 4。Hibernate 5 将丢失通过 configuration.configure() 获取的映射类。

hibernate.cfg.xml 应位于 src 文件夹的根目录中,或者,如果您使用 maven 构建,则应位于 resources 中文件夹(不是属性)。无论如何,重建(刷新)后,它将位于构建文件夹的根目录中(binbuild)。

关于java - hibernate.cfg.xml-如何合并它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981542/

相关文章:

java - JPA实体没有表中的列,但根据实体中不存在的列进行查询

java - 在 hibernate 中调用存储过程错误

java - Java Web 服务是否可以从 Apache Tomcat 向客户端发送通知?

java.lang.instrument 与 AspectJ

java - 为什么ByteBuffer.allocate()和ByteBuffer.allocateDirect()之间的奇异性能曲线差异

java - Hibernate Group by Criteria Object

Hibernate 生成器类增量与序列?

java - 为什么说SessionFactory是ConnectionProvider的客户端

Java:将 ArrayList<Byte> 转换为 byte[] 的最佳方法是什么?

java - 支持构建 Java/maven 项目吗?