疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

HIbernate4 获取SessionFactory 的方式


 

如果你是用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 }