hibernateUtil
hibernate的工具类,里面封装了获取session和关闭session的方法,能够直接使用
HibernateUtil.java
1 import org.hibernate.Session; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.cfg.Configuration; 4 5 /** 6 * 工具类,控制session的唯一性 7 * @author 8 * @date 2015年12月1日 下午1:24:42 9 */ 10 public class HibernateUtil { 11 12 private final static ThreadLocal sessionTL=new ThreadLocal(); 13 14 private static Configuration configuration; 15 16 private static final SessionFactory sessionFactory; 17 18 static{ 19 try { 20 configuration=new Configuration().configure(); 21 sessionFactory=configuration.buildSessionFactory(); 22 } catch (Exception e) { 23 e.printStackTrace(); 24 throw new ExceptionInInitializerError(e); 25 } 26 27 } 28 //得到session 29 public static Session currentSession(){ 30 //sessionTL的get()方法根据当前线程返回其对应的线程内部变量 31 //也就是我们要的session,多线程的情况下共享数据库连接是不安全的。 32 //ThreadLocal 它能保证每个线程都有自己的session 33 Session session=(Session) sessionTL.get(); 34 if(session==null){ 35 //就得创建一个数据库连接的session 36 session=sessionFactory.openSession(); 37 //需要将这个session保存到ThreadLocal中 38 sessionTL.set(session); 39 } 40 //如果当前线程已经访问过数据库了, 41 //则从sessionTL中get()就可以获取该线程上次获取的数据库连接对象 42 return session; 43 } 44 45 public static void closeSession(){ 46 Session session=(Session) sessionTL.get(); 47 48 sessionTL.set(null); 49 session.close(); 50 } 51 }