我正在上一门关于 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
中文件夹(不是属性
)。无论如何,重建(刷新)后,它将位于构建文件夹的根目录中(bin
,build
)。
关于java - hibernate.cfg.xml-如何合并它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981542/