我正在学习Hibernate和JPA基础课程,我似乎无法找到任何讨论论坛或类似课程的一部分,所以在这里问。
教师让我创建了一个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 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?
感谢。
答案 0 :(得分:1)
有一些方法可以使用hibernate.cfg.xml
。它略微取决于Hibernate版本。
你有
Configuration configuration = new Configuration();
如果你这样做
configuration.configure();
Hibernate会阅读hibernate.cfg.xml
要构建会话工厂,这已足够了:
return new Configuration().configure().buildSessionFactory();
当然,你可以这样做:
Configuration configuration = new Configuration();
configuration.configure();
return configuration.buildSessionFactory
(new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties()).
build());
只有applySettings(configuration.getProperties())
中有属性时才需要此hibernate.cfg.xml
。但是这段代码只能用于Hibernate 4.Hibernate 5将丢失它将通过configuration.configure()
获得的映射类。
hibernate.cfg.xml
应位于src
文件夹的根目录中,如果您使用maven版本,则应位于resources
文件夹(不是properties
)中。无论如何,在重建(刷新)之后,它将位于构建文件夹(bin
,build
)的根目录中。