Hibernate4 获取SessionFactory 的方式

这些年一直都在做Mybatis的开发,几乎都忘记了Hibernate的开发,现在重新学习一下,下载最新的Hibernate 正式版Hibernate.4.2.2.Final。

如果你是用maven的话就是

1         <dependency>

2             <groupId>org.hibernate</groupId>

3             <artifactId>hibernate-core</artifactId>

4             <version>4.2.2.Final</version>

5         </dependency>

发现Hibernate4已经将configuration的buildSessionFactory方法已经划线了,说明已经过时了。

后来参看hibernate源码。以及API帮助文档,发现Hibernate4新增了一个接口ServiceRegistry,

所有基于Hibernate的配置或者服务都必须统一向这个ServiceRegistry注册后才能生效。

所以不难看出 Hibernate4的配置入口不再是Configuration对象,而是ServiceRegistry对象,Configuration对象将通过ServiceRegistry对象获取配置信息。

使用了Builder模式创建一个ServiceRegistry对象,可以看到源码org.hibernate.service.ServiceRegistryBuilder这个类。

具体获取如下:

 1 import org.hibernate.HibernateException;

 2 import org.hibernate.SessionFactory;

 3 import org.hibernate.cfg.Configuration;

 4 import org.hibernate.service.ServiceRegistry;

 5 import org.hibernate.service.ServiceRegistryBuilder;

 6 

 7 public class Test {

 8 

 9     private static Configuration configuration = null;

10     private static SessionFactory sessionFactory = null;

11     private static ServiceRegistry serviceRegistry = null;

12     public static void main(String[] args) {

13         try {

14             configuration = new Configuration().configure();

15             serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();

16             sessionFactory = configuration.buildSessionFactory(serviceRegistry);

17         } catch (HibernateException e) {

18             e.printStackTrace();

19         }

20     }

21 

22 }

 

 

你可能感兴趣的:(sessionFactory)