hibernate什么时候延迟加载?

寂寞空虚党 2009-05-08 10:11:30
比如有的时候,不延迟加载,效率就比较低。
若是延迟加载的话,就会报 Session已关闭。
...全文
261 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
寂寞空虚党 2009-05-18
  • 打赏
  • 举报
回复
我是用了 spring,我的意思是,延迟加载的话,我想取出这个对象里面的一个属性对象的属性对象的属性,类似这种级联的时候,
不好控制,如果不延迟,是肯定没问题,但效率会打折扣。如果延迟的话, 就不好控制Session了
swprogrammer 2009-05-15
  • 打赏
  • 举报
回复
在查询的时候你用load,那么hibernate就会先给你返回一个代理对象,当你调用这个对象的属性的时候hibernate才会去加载这个对象。
get不会使用延迟加载
你用spring管理hibernate事务的话,那就会不存在session关闭的对象
用spring管理事务,也是现在一种最常用的方式
chenleicom 2009-05-15
  • 打赏
  • 举报
回复
比如 你取一个set集合里面的值 如果有100条数据 如果不是延时加载 那么它运行到set集合取数据的时候 就马上发出100条SQL语句 到数据库里 查询值 效率肯定降低

你延时加载 session关闭 是因为你没处理好session
如果加了spring 可以自己写个单独的session类 继承OpenSessionInviewFilter类 并实现这个类里面的方法

如果是hibernate 就把session放到 filter类里面去 管理

原理都是 如果session是关闭的 就打开 如果session是打开就直接返回
qinlu7662032 2009-05-14
  • 打赏
  • 举报
回复
不使用 延迟加载的话 性能太差 还是用最原始的方法 写一个查询方法 如果需要级联插叙的话 就调用它 这样就不用考虑什么性能问题了
m21686041 2009-05-13
  • 打赏
  • 举报
回复
要是延时加载可以随时空值就好了..不过按我这个初学者的理解可能要 专门写个方法来操作xml
kjduanhaowei 2009-05-13
  • 打赏
  • 举报
回复
lazy加载的话,加一个OpenSessionInViewFilter应该就可以把东西拿上来了吧?
lanxin8805 2009-05-12
  • 打赏
  • 举报
回复
呵呵,是一个很纠结的问题,我也总在考虑
寂寞空虚党 2009-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fgl459 的回复:]
例如:银行开户,一个人可以开多个帐户,一个帐户只能属于一个人,所以在用户类里包含一个帐户的集合,帐户类里包含一个用户类型,他们之间是一对多的关系.
如过你在查询的时候,通过用户查询是,如果只想查到用户就用(hibernate)默认的延迟加载,这样效率也高,如果你想把该用户的的所有帐户都一同查出来,那就需要立即加载了,这样一来如果一个用户对应的帐户比较多的话,他的效率是很低的.
设置加载方式一般有两种,一种是通过映射文件(…
[/Quote]
但是,我要是延迟的话。,如果我要在页面上显示里面那个对象属性的,属性的话。。是显示不出来的
fgl59 2009-05-08
  • 打赏
  • 举报
回复
例如:银行开户,一个人可以开多个帐户,一个帐户只能属于一个人,所以在用户类里包含一个帐户的集合,帐户类里包含一个用户类型,他们之间是一对多的关系.
如过你在查询的时候,通过用户查询是,如果只想查到用户就用(hibernate)默认的延迟加载,这样效率也高,如果你想把该用户的的所有帐户都一同查出来,那就需要立即加载了,这样一来如果一个用户对应的帐户比较多的话,他的效率是很低的.
设置加载方式一般有两种,一种是通过映射文件(lazy=false),另一种是通过程序的方式来实现的也很简单.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧