在imooc上看了很多的视频,当用到sessionfactory的时候,都是通过以下方法实现的;
不过很可惜,可能是由于版本更新,ServiceRegistryBuilder过期了,用不了,那怎么办?
可以用它的子类StandardServiceRegistryBuilder;
那么是不是直接用他的子类就可以了呢,很遗憾还是不行;
替换之后运行会报这么一个错误,大家可以熟悉一下:
然后就苦逼的去google并翻看API,发现这个StandardServiceRegistryBuilder在
applySetting之前要进行配置,其实也很简单,遵循链式编程,在applySetting之前调用这么一个方法(configure)就可以了;
以下是我个人的一个sessionFactoryUtil;给看视频时有相似困惑,或者码代码过程中遇到相似问题的小伙伴
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
/**
*
* @author laimi
*/
public class DBUtil {
private SessionFactory sessionFactory;
//单例模式
private static DBUtil dbutil = null;
private DBUtil(){
}
public static DBUtil newInstance(){
if(dbutil==null){
dbutil = new DBUtil();
}
return dbutil;
}
private void init() {
Configuration config = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().applySettings(config.getProperties()).build();
sessionFactory = config.buildSessionFactory(serviceRegistry);
}
public void destory(){
if(sessionFactory!=null){
sessionFactory.close();
}
}
public SessionFactory getSessionFactory(){
if(sessionFactory==null){
init();
}
return sessionFactory;
}
}