单例模式
让一个项目只使用一个sessionfactory
在第一个项目的基础上将创建sessionfactory的代码封装成一个类,在manager中再去调用它。在static代码块中操作只会执行一次
package dao;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class hibrtnateUtil {
private static SessionFactory sf = null;
private static Configuration cfg = null;
private static StandardServiceRegistry ssr = null;
static {
try{
cfg = new Configuration().configure();
ssr = new StandardServiceRegistryBuilder().configure().build();
sf = cfg.buildSessionFactory(ssr);
}catch (HibernateException e){
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory(){
return sf;
}
public static void closeSessionFactory(){
sf.close();
}
}
配置hibernate.hbm.xml添加如下属性从而使用session的getCurrentSession方法,保证线程中Session的唯一性
调用hibernateUtil类 创建SessionFactory
使用Query查询数据库数据
执行结果如下