我刚刚阅读了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版本?
答案 0 :(得分:2)
该代码用于使用Hibernate 4.x
创建SessionFactoryHibernate 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。