Hibernate 5.2.x 中 sessionFactory 的擷取方式
版本:Hibernate 5.2.12(2017-11-1測)
起因:Hibernate 4.3 中通用的Configuration.buildSessionFactory()方法過時(Deprecation)。
參考:官網文檔 3.2.4. Building the SessionFactory
最新版工具類 HibernateUtils 代碼:
public class HibernateUtils {
private static SessionFactory sessionFactory;
private static SessionFactory buildSessionFactory(){
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure().build();
sessionFactory = new MetadataSources(ssr).buildMetadata().buildSessionFactory();
return sessionFactory;
}
public static SessionFactory getSessionFactory(){
return (sessionFactory==null ? buildSessionFactory() : sessionFactory);
}
public static Session openSession(){
return getSessionFactory().openSession();
}
}
對比 Hibernate 4.3 版代碼:
public class HibernateUtils {
private static SessionFactory sessionFactory;
private static SessionFactory buildSessionFactory(){
sessionFactory = new Configuration().configure().buildSessionFactory();
return sessionFactory;
}
public static SessionFactory getSessionFactory(){
return (sessionFactory==null ? buildSessionFactory() : sessionFactory);
}
public static Session openSession(){
return getSessionFactory().openSession();
}
}
注意事項:
1、最新版第 5 行與下句等效:
sessionFactory = new MetadataSources(ssr).getMetadataBuilder().build().getSessionFactoryBuilder().build();
2、設定檔 hibernate.cfg.xml 預設在 /src 目錄下。