gpt4 book ai didi

java - Hibernate:Hibernate 总是使用对象代理吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:17 24 4
gpt4 key购买 nike

我认为只有当类具有 Collection 类型的字段并使用延迟获取时才使用对象代理。但一些消息来源似乎表明 Hibernate 3 对所有对象使用代理,无论该对象是否具有集合类型的字段。

有人可以解释一下 Hibernate 何时使用对象代理吗?是一直如此,还是只是在某些情况下?

最佳答案

根据 Hibernate docs :

By default, Hibernate uses lazy select fetching for collections and lazy proxy fetching for single-valued associations. These defaults make sense for most associations in the majority of applications.

因此,如果您有一个标记为关联(一对一或多对一)的对象,那么它将是一个代理对象,直到您尝试访问它,此时 Hibernate 将尝试使用数据库中的值填充它。

据我所知,集合将被初始化为 null,直到您尝试访问它,此时 Hibernate 将尝试用值来填充它。

正如您在评论中所建议的,是的,您的对象完全依赖于代理对象在您请求时加载值。

如果您在关联上使用 fetchType.EAGER,当然这些都不适用。如果您是 Hibernate 新手,我建议您仔细阅读 this guide我写的。它涵盖了不同类型关系的获取类型和配置等内容。

关于java - Hibernate:Hibernate 总是使用对象代理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622719/

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