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 }

 

posted on 2015-12-02 20:04  映日残阳  阅读(174)  评论(0编辑  收藏  举报