在实际应用中 延迟加载与session关闭的矛盾是如何处理的?

IT互联网 已帮助: 时间:2025-06-28 18:56:08

在实际应用中,延迟加载与session关闭的矛盾是如何处理的?

难度:⭐⭐⭐

题库:IT/互联网,软件开发

标签:如何处理,加载,矛盾

参考解答

用户头像

406***140

2025-06-28 18:56:08

延迟加载与session关闭的矛盾一般可以这样处理:

1)、关闭延迟加载特性。

操作起来比较简单,因为hibernate的延迟加载特性是在hbm配置里面可控制的。默认lazy=”true”,具体配置可以查看一下相关文档,就不详细叙述了。

但使用这个解决办法带来的隐患是十分大的。

首先,出现no session or session was closed就证明了您已经在使用外键关联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果关联表越多,后果也可以想象得到。所以不建议使用这个方法解决。

2)、在session关闭之前把我们想要查询的数据先获取了。

首先需要了解一下session什么时候关闭,也就是它的生命周期。通常情况下hibernate会在查询数据关闭session,而使用getHibernateTemplate().get方法查询后会延迟关闭的时间。会在事务结束后才关闭。

使用拦截器(Interceptor)或过滤器(Filter)控制session。

spring为解决hibernate这一特性提供的解决方案,可以有效的控制session生命周期。


上一篇 常用的设计模式有哪些?

下一篇 struts2中 Action通过什么方式获得用户从页面输入的数据 又是通过什么方式把其自身的数据传

相似问题