问题描述
我想请教一下hibernate的延迟加载在webapp应用中能应用在哪些地方。web应用中页面取数据都是一次加载完成。有操作的话都是另外一次请求,如何应用延迟加载。 问题补充:延迟加载的概念我是了解的。我的意思是如果在页面上先显示出来class,等我需要看这个class里面有多少user的时候再使用延迟加载,那该如何实现。因为在页面上的任何操作都会触发action > service > dao,其实就是如何跨action实现延迟加载。我能想到的就是把po存在session里,不过这样好像不太优雅。
解决方案
你举得例子不对,你举得那个例子,直接去数据库取user就行了延迟加载.lazy=true 例如User和Dept吧,多对一。 from User可以查询User表 页面上${u.dept.name}可以输出部门名称,如果不写u.dept,就不会执行dept的查询。 需要用OpenSessionInView。
解决方案二:
你有这个疑问说明你根本不知道延迟加载的概念,存起来,何必呢?如果存起来,又使用了延迟加载,那和你直接去数据库取有区别吗?
解决方案三:
数据用到的时候,代理才会去真正的发送sql,取数据。
解决方案四:
延迟加载完全是为了解决效率问题例如 user classclass的bean里面肯定包含user就是说你去数据库查数据的时候3班你查出来了,因为你配置了和user的关系,hibernate会帮你查出class下的所有user可以通过lazy=true配置延迟加载也就是只有你用到user的时候才会去数据库单独取一次
时间: 2024-10-25 11:36:16