Hibernate - 非工作代码,什么是服务注册表

时间:2018-02-11 17:51:00

标签: java hibernate

我刚刚阅读了O'Reilly的“Just Hibernate”一书。有些代码并没有完全解释,只是在没有完整描述的情况下给出。 这段代码例如:

public class BasicMovieManager {
    private SessionFactory sessionFactory = null;
    // Creating SessionFactory using 4.2 version of Hibernate
   private void initSessionFactory(){
       Configuration config = new Configuration().configure();
       // Build a Registry with our configuration properties
       ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
       config.getProperties()).buildServiceRegistry();
       // create the session factory
       sessionFactory = config.buildSessionFactory(serviceRegistry);
}
...
}

我只想将代码复制到我的Hibernate实验中,但目前稳定的Hibernate-5.2并不知道ServiceRegistryBuilder类。什么是服务注册表,如何更改代码以使用当前的Hibernate版本?

1 个答案:

答案 0 :(得分:2)

该代码用于使用Hibernate 4.x

创建SessionFactory

Hibernate 5.x的类似代码如下:

    StandardServiceRegistry standardRegistry = 
       new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
    Metadata metaData = 
        new MetadataSources(standardRegistry).getMetadataBuilder().build();
    sessionFactory = metaData.getSessionFactoryBuilder().build();

如您所见,在Hibernate 5中使用了StandardServiceRegistry类。如果您没有hibernate.cfg.xml文件,请使用不带参数的configure()方法。

有关详细信息,请参阅this article