Mybatis创建SessionFactroy的完美方式
/**
* SqlSessionFactory的生命周期应为全局单例
*/
public class SqlSessionFactoryUtil{
private static SqlSessionFactory sqlSessionFactory = null;
private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
private SqlSessionFactoryUtil(){ }
public static SqlSessionFactory initSqlSessionFactory(){
String resouce = "MybatisConfig.xml";
InputStream inputStream = null;
try{
inputStream = Resources.getResourceAsStream(resouce);
}catch(IOException ex){
Logger.getLogger(sqlSessionFactoryUtil.class.getName()).log(Level.SEVERE,null,ex);
System.out.println(ex.getMessage());
}
synchronized(CLASS_LOCK){
if(sqlSessionFactory == null){
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
}
return sqlSessionFactory
}
public static SqlSession getSqlSession(){
if(sqlSessionFactory == null){
initSqlSessionFactory();
}
return sqlSessionFactory.openSqlSession();
}
}