日期:2014-05-18  浏览次数:20789 次

侠哥们,SSH中,hibernate的session什么时候关闭。
网上看了半天,还是没太搞明白。
  hibernate的session在SSH中是由spring控制的,就是说它的创建,销毁等都是spring控制的。
  那么什么时候这个session关闭呢。
  例如: 点击检索按钮,执行查找,返回数据到画面。
  这个时候,是在DAo层执行完查找就关闭了??? 还是在Service层事务结束时关闭了??还是说类似于线程池什么的,由 spring控制什么时候释放????
  
  如果在dao层session关闭的话,一级缓存就会被清除了吧。。。??? 如果在查找的话,先是一级缓存,然后再查找数据库。。。
  如果说session在返回到action以至于画面时候都没有关闭,那么在检索的时候是不直接就能从一级缓存里取出数据了。

  哪位大侠给讲讲。。。

------解决方案--------------------
session 如果自动关闭的话,要设时间的
一般tomcat下预设的是15分钟(好像,不太记得了!)
------解决方案--------------------
交由 spring 事务管理

相当于一个 session 池,要用的时候 ,通过 sessionFactory.getC..session() 来取得,不需要关闭。

当然你也可以通过 sessionFactory.openSession()来取得session,这样的话,用完就要关。
------解决方案--------------------
交由spring 管理, 就是 要用时 从线程中拿,用完放回去。 不开,不关。