休眠会话关闭

ano*_*non 1 session caching hibernate struts2 interceptor

我只是按照一个简单的hibernate struts教程,通过hibernate成功地进行了db调用.但是,我没有看到代码在任何地方关闭hibernate连接.

sessionFactory.getCurrentSession();
Run Code Online (Sandbox Code Playgroud)

用于获取每个请求的会话.我应该在用户注销时关闭此会话吗?或者在每个请求之后是否由框架处理?

第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器?

还有第三个问题(对不起它刚刚出现在我的脑海里)用hibernate/struts2进行缓存的最佳选择是什么?

JB *_*zet 5

关于第一个问题,参考文件说:

当第一次调用getCurrentSession()为当前线程时,org.hibernate.Session开始.然后它被Hibernate绑定到当前线程.当事务结束时,无论是通过提交还是回滚,Hibernate都会自动从线程中取消绑定org.hibernate.Session并为您关闭它.

关于你的第二个问题,文件说:

Interceptor接口提供从会话到应用程序的回调,允许应用程序在保存,更新,删除或加载之前检查和/或操作持久对象的属性.一个可能的用途是跟踪审计信息.例如,以下Interceptor在创建Auditable时自动设置createTimestamp,并在更新Auditable时更新lastUpdateTimestamp属性.

关于第三个问题,Struts2是一个演示框架.它与持久性无关,因此与持久化实体的缓存无关.该文档详细介绍了二级缓存.

如您所见,文档中包含大量有趣的信息.我建议你阅读它.