gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:46:24 26 4
gpt4 key购买 nike

我正在上一门关于 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com