hibernate 的SessionFactory的實現
阿新 • • 發佈:2019-01-09
老版本 是這麼 實現的
載入 配置檔案 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 }