1. 程式人生 > >hibernate 的SessionFactory的實現

hibernate 的SessionFactory的實現

老版本 是這麼 實現的


載入 配置檔案  hibernate.cfg.xml:

public Configuration configure() throws HibernateException {
configure( "/hibernate.cfg.xml" );
return this;
}


SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory(); 


新版本 是 

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 }