线程安全是我们需要注意的问题,而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;
- }
- }