Hibernate事务的高级应用
第一步:创建静态成员
在HibernateUtil类中我们需要定义一个静态的成员变量用于保存当前线程共用的Session :
private static ThreadLocal<Session>sessionLocal = newThreadLocal<Session>();
第二步:修改获取session的方法
改造HibernateUtil类的获取Session方法:
getCurrentSession创建的session会和绑定到当前线程,而openSession不会。 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭添加HibernateUtil类中清除线程容器Session的方法:(这个方法是使用openSession创建session时使用的)
/** * 关闭当前线程容器中的SESSION */ public static void closeSession() { Session s = sessionLocal.get(); if (s != null) { // 清除当前线程容器中的SESSION sessionLocal.set(null); } }