线程安全是我们需要注意的问题,而SessionFactory是线程安全的,可以让多个执行线程同时存取SessionFactory,并且不会有数据共享的问题。
一般情况下一个程序只需要一个sessionfactory,也就是所谓的单例模式,如何实现这个单例模式呢?有两个办法
一是可以用静态代码块
二是私有构造方法,提供公有接口
介绍一下第一种方法,在工具类中通过静态代码块生成唯一的SessionFactory;
package Usertest;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static Configuration cfg;
private static SessionFactory sf;
static
{
try {
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory(){
return sf;
}
}
这样就可以啦~~