gpt4 book ai didi

java - 删除 Hibernate 生成的延迟初始化代理的最安全方法是什么?

转载 作者:行者123 更新时间:2023-11-30 03:19:38 27 4
gpt4 key购买 nike

我想保留父/子关系,但当我解析父对象时,我不想获取子元素。

最佳答案

生成代理以便 Hibernate 可以拦截对未初始化关联的调用并尝试按需获取它们。

LazyInitializationException 是一种代码味道。您之所以会得到它,是因为您在关闭 session 之前尚未正确初始化所有必需的实体关联。切换到 EAGER 关联也是 bad idea因为获取策略是查询的责任。

如果不需要关联,请尝试减少关联数量并改用查询。您可以构建仅具有多对一关联(镜像 FK 关系)的应用程序,并且您可以使用 DAO 方法来代替一对多关联。

至于这个说法:

I would like to keep the Parent/Child relationship but when I parse through the Parent Object I don't want to fetch the child elements.

如果您保留父/子关系,则始终需要在使用之前加载关联。尝试删除代理听起来就像您试图破解解决方案,而不是正确设计应用程序层。

所以代理很好,它们可以让您提高应用程序性能,因为当您尝试访问根实体时,您并不总是获取所有关联。

要禁用代理,您只需使用 Proxy 注释您的实体即可。注释:

@Proxy(lazy=false)

关于java - 删除 Hibernate 生成的延迟初始化代理的最安全方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com