从Hibernate 4开始,Configuration.buildSessionFactory()
被Configuration.buildSessionFactory(ServiceRegistry)
取代。所以我们必须像这样创建会话工厂:
private static SessionFactory sessionFactory = null;
private static StandardServiceRegistry reg;
private static final String TAG = new String("HIBERNATE_UTIL: ");
public HibernateUtil() {
try {
Configuration cfg = new Configuration().configure("/com/dorm/service/hibernate.cfg.xml");
StandardServiceRegistryBuilder reg_builder = new StandardServiceRegistryBuilder();
reg_builder.applySettings(cfg.getProperties());
reg = reg_builder.build();
sessionFactory = cfg.buildSessionFactory(reg);
System.out.println(TAG+"Session Factory created");
}catch(HibernateException he) {
System.out.println(TAG+"Error in creating Session Factory");
he.printStackTrace();
}
}
我想知道,
StandardServiceRegistry
做了什么?
在StandardServiceRegistry
方法中传递configuration.buildSessionFactory()
的对象的重要性是什么?
提前感谢您的回答。
编辑:我已经提到了hibernate的javadocs,但无法理解这个概念。答案 0 :(得分:1)
Hibernate 4现在有一个用于注册内部服务的插件机制(连接提供程序,事务管理)。
因此,您可以自定义如何检索服务(例如OSGI),因此使用此选项可以最大限度地提高会话工厂的可定制性。