首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于hibernate session管理的一些有关问题

2012-11-06 
关于hibernate session管理的一些问题hibernate中,sessionFactory是线程安全的,可以被所有的应用程序共享,

关于hibernate session管理的一些问题
hibernate中,sessionFactory是线程安全的,可以被所有的应用程序共享,而session不是线程安全的,被多个线程共享时会出现不可预知的后果,那么对session 采用ThreadLocal实现共享会出问题吗?

public class HibernateUtil {    private static SessionFactory sessionFactory;    static{try{    sessionFactory = new Configuration().configure().buildSessionFactory();}catch(HibernateException e){ throw new RunTimeException("Configuration problem:"+e.getMessage());}    }   public static final TreadLocal session = new ThreadLocal();   public static Session currentSession() thrwos HibernateException{  Session s = (Session) session.get();if(s==null){s = sessionFactory().openSession();session.set(s);}return s;   }   public static void closeSession() throws HibernateException{Session s = (Session)session.get();session.set(null);if(null != s){    s.close();}  }}


这个是《深入浅出hibernate》中关于session管理的实现, 有些不明白。如果各位有比较好的对session管理的方法,大家都来说说。 1 楼 NicholasBugs 2007-12-12   明白了一些,Tomcat会维护一个Servlet实例,而
Servle的执行是多线程的,会被多个并发请求调用,
为每个线程维护一个ThreadLocal型的session,
保证了session的在线程安全前提下的共享。 2 楼 myworkfirst 2007-12-12      建议你采有事务机制 3 楼 ghujki 2007-12-14   如果有lazy呢? 4 楼 uidin 2008-01-10   关注,对这个也有点不明白

热点排行