由于刚开始学习Hibernate,在视频教程中获取SessionFactory的方法都如下:
SessionFactory sessionFactory =new Configuration().configure()
.addClass(User.class).buildSessionFactory();
但在使用新版版的Hibernate框架时这个方法已经显示过时,不再建议使用,因水平有限,只在该方法的注释中注意到要使用到ServiceRegistry的对象来BuildSessionFactory,但如何获取到
这个对象呢,因看不懂源码,就在网上寻找答案,如下:
<pre name="code" class="java"> public class Test {
private static Configuration configuration = null;
private static SessionFactory sessionFactory = null;
private static ServiceRegistry serviceRegistry = null;
public static void main(String[] args) {
try {
configuration = new Configuration().configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
以上这个可以在4.2.X中使用,但到4.4.X版本中又过时了,取而代之的是StandardServiceRegistryBuilder的这个类,使用方法与上边那个相似,这样就O了,代码如下:
public void getSessionFactory() throws Exception {
Configuration configure =new Configuration().configure();
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configure.getProperties()).build();
configure.buildSessionFactory(serviceRegistry);
}