延迟加载。两个实体管理?

时间:2015-07-03 07:03:20

标签: hibernate java-ee lazy-loading

我有一个简单的问题。我知道延迟加载bean,在需要时将加载实际中的伙伴实体。这仅适用于"具有"的实体。另一个实体是管理的。

我的朋友说:合作伙伴实体也必须得到管理!

我的问题:关系中的两个实体是否需要为延迟加载管理,或者仅仅是关系的所有者?

2 个答案:

答案 0 :(得分:0)

如果某些内容被懒惰地加载,那么它必须是由Hibernate创建的代理。所以,基本上,答案是:

是的,代理必须由Hibernate管理。

但是,如果使用字节码检测,那么Hibernate甚至可能不会创建代理,因为它可以拦截访问延迟加载的实体的代码。在这种情况下,如果未访问延迟加载的实体,则既不是真实实体也不是代理。当然,一旦访问并加载了实体,它就会像持久化上下文(会话)中的任何其他实体实例一样由Hibernate管理。

答案 1 :(得分:0)

anwer在你的问题中:懒惰的关系意味着hibernate知道可能是另一方的实体,但不知道哪个,那么如何管理一个不存在的实体?代理既不是托管实体,也不是一种监听器。