hibernate.cfg.xml-如何合并它

时间:2016-06-23 02:52:30

标签: java hibernate

我正在学习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?

感谢。

1 个答案:

答案 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)中。无论如何,在重建(刷新)之后,它将位于构建文件夹(binbuild)的根目录中。