佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 990|回复: 2

[Java] 关于LazyInitializationException , Hibernate and EJB3

[复制链接]
发表于 18-5-2008 06:46 PM | 显示全部楼层 |阅读模式
已经上网查了, 是牵涉到Singleton implementation 的问题。

这个Exception 应该是 Hibernate throw 出来的, 由于 Jboss 4.22GA 用的正是 Hibernate , 所以会有这个问题。

我想问的是, 如果我不是用JBoss , 也没有用 hibernate 。 这种(不是这个) exception 会发生吗?

EJB3 里有没有内建机制, 可以达到Lazy Fetching 但不控制这种情况的发生呢?
回复

使用道具 举报


ADVERTISEMENT

发表于 18-5-2008 08:10 PM | 显示全部楼层
这个问题是因为Hibernate的Entity的Relationship默认是Lazy Fetch的,也就是说当你initialize一个parent object后,children objects是暂时不会被加载的;当你需要用到child object时,Hibernate session才会载入child object。
LazyInitializationException最普遍的原因就是在加载Child object的时候session就已经close了,所以才会抛出这个异常。这个问题普遍出现在view layer,因为session的lifecycle通常是在request之后就会close了。
EJB3要如何解决这个问题我不太清楚,没办法的话就要用Eager Fetch,不过很耗资源;
在Spring的话可以用OpenSessionInViewFilter解决。
回复

使用道具 举报

 楼主| 发表于 24-5-2008 03:14 PM | 显示全部楼层
谢谢你的解答。

我也找了些资料,geronimo 的内建 persistence engine , openjpa 是没有throw 这个Exception 的, 只会return null。 所以在handling 上跟Hibernate 不同。

我正好在port 一个 Jboss 的 project 到 geronimo , 所以面对这个问题, 一番的搜寻与研究,花了很多时间但也了解了很多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 27-12-2025 06:21 AM , Processed in 0.105717 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表