侠哥们,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 管理, 就是 要用时 从线程中拿,用完放回去。 不开,不关。