這些年一直都在做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 }
