老版本 是这么 实现的
加载 配置文件 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 }