Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 休眠会话关闭_Hibernate_Session_Caching_Struts2_Interceptor - Fatal编程技术网

Hibernate 休眠会话关闭

Hibernate 休眠会话关闭,hibernate,session,caching,struts2,interceptor,Hibernate,Session,Caching,Struts2,Interceptor,我只是遵循了一个简单的hibernate struts教程,并通过hibernate成功地进行了db调用。但是,我没有看到关闭hibernate连接的代码 sessionFactory.getCurrentSession(); 用于获取每个请求的会话。当用户注销时,是否应关闭此会话?或者在每一次请求之后,框架是否会处理这些问题 第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器 第三个问题很抱歉,我突然想到使用hibernate/struts2进行缓存的最佳选项是什么?关于

我只是遵循了一个简单的hibernate struts教程,并通过hibernate成功地进行了db调用。但是,我没有看到关闭hibernate连接的代码

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,那么最好跳过缓存部分,集中精力于核心领域

单个问题中的问题太多。单个问题中的问题太多。