Hibernate 休眠会话关闭
我只是遵循了一个简单的hibernate struts教程,并通过hibernate成功地进行了db调用。但是,我没有看到关闭hibernate连接的代码Hibernate 休眠会话关闭,hibernate,session,caching,struts2,interceptor,Hibernate,Session,Caching,Struts2,Interceptor,我只是遵循了一个简单的hibernate struts教程,并通过hibernate成功地进行了db调用。但是,我没有看到关闭hibernate连接的代码 sessionFactory.getCurrentSession(); 用于获取每个请求的会话。当用户注销时,是否应关闭此会话?或者在每一次请求之后,框架是否会处理这些问题 第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器 第三个问题很抱歉,我突然想到使用hibernate/struts2进行缓存的最佳选项是什么?关于
sessionFactory.getCurrentSession();
用于获取每个请求的会话。当用户注销时,是否应关闭此会话?或者在每一次请求之后,框架是否会处理这些问题
第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器
第三个问题很抱歉,我突然想到使用hibernate/struts2进行缓存的最佳选项是什么?关于第一个问题,我说: 第一次调用时,org.hibernate.Session开始 getCurrentSession是为当前线程创建的。然后它被绑定 通过休眠到当前线程。当事务结束时 通过提交或回滚,Hibernate自动解除绑定 从线程中删除org.hibernate.Session并为您关闭它 关于你的第二个问题,他说: 拦截器接口提供从会话到 应用程序,允许应用程序检查和/或操作 保存、更新和删除持久对象之前的属性 或者是上膛了。一个可能的用途是跟踪审计信息。 例如,以下拦截器自动设置 创建审核表并更新 更新审核表时的lastUpdateTimestamp属性 关于第三个问题,Struts2是一个表示框架。它和持久性无关,因而和持久性实体的缓存无关。详细介绍了第二级缓存
如您所见,文档中包含了大量有趣的信息。我建议读一读。关于第一个问题,报告说: 第一次调用时,org.hibernate.Session开始 getCurrentSession是为当前线程创建的。然后它被绑定 通过休眠到当前线程。当事务结束时 通过提交或回滚,Hibernate自动解除绑定 从线程中删除org.hibernate.Session并为您关闭它 关于你的第二个问题,他说: 拦截器接口提供从会话到 应用程序,允许应用程序检查和/或操作 保存、更新和删除持久对象之前的属性 或者是上膛了。一个可能的用途是跟踪审计信息。 例如,以下拦截器自动设置 创建审核表并更新 更新审核表时的lastUpdateTimestamp属性 关于第三个问题,Struts2是一个表示框架。它和持久性无关,因而和持久性实体的缓存无关。详细介绍了第二级缓存
如您所见,文档中包含了大量有趣的信息。我建议您阅读。需要更多信息来回答您的问题,例如您是如何使用hibernate的,我们真的不知道您遵循的是哪一个教程:关于您的问题 Hibernate会话代表一个工作单元,关闭会话始终是一个很好的做法。我看不到Hibernate会话与用户登录/注销过程之间的关系。请不要将web会话的概念与Hibernate会话混为一谈,因为两者完全不同。 对于hibernate级别的缓存,您可以使用ehcache作为二级缓存,hibernate为您提供现成的一级缓存,对于Struts2方面,我将推荐ehcache,这是一个整体良好且灵活的缓存解决方案。
我的建议是,如果您正在学习Strust2和Hibernate,那么最好跳过缓存部分,集中精力在核心领域需要更多信息来回答您的问题,例如您是如何使用Hibernate的,我们真的不知道您遵循的是哪一个教程:关于您的问题 Hibernate会话代表一个工作单元,关闭会话始终是一个很好的做法。我看不到Hibernate会话与用户登录/注销过程之间的关系。请不要将web会话的概念与Hibernate会话混为一谈,因为两者完全不同。 对于hibernate级别的缓存,您可以使用ehcache作为二级缓存,hibernate为您提供现成的一级缓存,对于Struts2方面,我将推荐ehcache,这是一个整体良好且灵活的缓存解决方案。
我的建议是,如果您正在学习Strust2和Hibernate,那么最好跳过缓存部分,集中精力于核心领域单个问题中的问题太多。单个问题中的问题太多。