我想保持父/子关系,但是当我解析父对象时,我不想获取子元素。
问问题
1583 次
1 回答
3
生成代理以便 Hibernate 可以拦截对未初始化关联的调用并尝试按需获取它们。
这LazyInitializationException
是一种代码气味。您得到它是因为您在关闭之前没有正确初始化所有必需的实体关联Session
。切换到 EAGER 关联也是一个坏主意,因为获取策略是查询职责。
如果您不需要它们,请尝试减少关联的数量并改用查询。您可以仅使用多对一关联(镜像 FK 关系)构建应用程序,而不是一对多关联,您可以使用 DAO 方法。
至于这个说法:
我想保持父/子关系,但是当我解析父对象时,我不想获取子元素。
如果您保持父/子关系,您总是需要在使用它之前加载关联。尝试删除代理听起来像是在尝试破解解决方案,而不是正确设计应用程序层。
所以代理很好,它们允许您提高应用程序性能,因为当您尝试访问根实体时,您并不总是获取所有关联。
要禁用代理,您只需使用Proxy注释来注释您的实体:
@Proxy(lazy=false)
于 2015-07-30T05:29:54.193 回答