java-经常关闭和打开休眠会话是一个好主意吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-经常关闭和打开休眠会话是一个好主意吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1325字,纯文字阅读大概需要2分钟。
内容图文
![java-经常关闭和打开休眠会话是一个好主意吗?](/upload/InfoBanner/zyjiaocheng/688/e55651bd2ed647c8b8dd9be1d6f4ebbb.jpg)
我正在开发一个应用程序,该应用程序需要经常从数据库中读取实体的状态或触发事件.但是,休眠状态读取状态后,除非我明确关闭会话并在新的会话中读取实体,否则它不会重新读取状态.
每次我要阅读实体然后打开它之后都关闭会话是一个好主意吗?这会给应用程序和数据库带来多少开销(我们也使用c3p0连接池)?
在再次读取实体之前将其从会话中简单退出是足够的吗?
解决方法:
您还可以使用刷新来重新加载实体.如@Bozho所述,逐出或清除.
使用连接池,打开和关闭会话的开销并不大.需要时间的是构建会话工厂.
关闭和重新打开会话的问题是,如果我记得很好的话,已经加载的对象仍然会分离.延迟加载可能会造成问题.因此,最好保持会话打开并使用逐出,清除或刷新.
请注意,如果您逐出该实体,并且访问已加载的一个这样的实体,您仍将获得旧数据.
MyEntity e = session.load( ... );
...
session.evict(e); // remove entity from the cache
String p = e.myProperty; // still the value at the time it was loaded
e = sesssion.load( ... ); // latest value
在您的情况下,最好引入一个设计准则,指出任何时候只要操纵实体,都应该先刷新它.
MyEntity e = session.load( ... );
...
session.refresh( e ); // refresh entity and cache
String p = e.myProperty; // latest value
e = sesssion.load( ... ); // latest value
上面的代码只是伪代码,我没有检查过.
请注意,如果打开会话一定时间,缓存可能会增加,在这种情况下,您可能仍要清除它.一般来说,最好保持会话较短,以防止出现高速缓存增长的问题,以及连接超时,事务超时和锁争用的问题.
内容总结
以上是互联网集市为您收集整理的java-经常关闭和打开休眠会话是一个好主意吗?全部内容,希望文章能够帮你解决java-经常关闭和打开休眠会话是一个好主意吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。