Hibernate 懒惰与懒惰的区别是什么;“真的”;和fetch=";选择";冬眠?

Hibernate 懒惰与懒惰的区别是什么;“真的”;和fetch=";选择";冬眠?,hibernate,lazy-evaluation,Hibernate,Lazy Evaluation,lazy=true属性是启用父集合和子集合的延迟加载以及相同的fetch=“select”属性。hibernate中的lazy=“true”和fetch=“select”之间有什么区别吗?是 lazy属性告诉hibernate何时获取子对象 fetch属性告诉hibernate如何获取子对象 当你说 lazy=true属性是启用父级和子级的延迟加载 集合和同一事物fetch=“select”属性 这完全是错误的。select fetch策略与关闭延迟加载不同。其实, selectfetching

lazy=true
属性是启用父集合和子集合的延迟加载以及相同的
fetch=“select”
属性。hibernate中的
lazy=“true”
fetch=“select”
之间有什么区别吗?

lazy
属性告诉hibernate何时获取子对象

fetch
属性告诉hibernate如何获取子对象

当你说

lazy=true属性是启用父级和子级的延迟加载 集合和同一事物fetch=“select”属性

这完全是错误的。select fetch策略与关闭延迟加载不同。其实,

selectfetching:第二个Select用于检索关联的 实体或集合。除非您通过 指定lazy=“false”,仅当 你可以访问协会

当我们说
fetch=“select”
时,即使是
lazy=“false”
,它也总是会触发单独的查询来检索关联对象

但是当我们说
lazy=“true”
时,这意味着它将在单独的查询中检索关联对象,但不是在加载对象时,而是在首次访问关联时。我们可以说
list().size()


当我们说
fetch=“join”
时,它总是触发一个查询来从数据库获取关联对象。

为了解决hibernate中n个查询(父子关系)的n+1选择问题,我们使用
fetch=“join”
而不是
fetch=“select”
。惰性设置决定在加载父对象时是否加载子对象。您需要分别设置父类的hibernate映射文件
lazy=“true”
表示不加载子级。默认情况下,子对象的延迟加载是正确的。

谢谢。当我读取用于代理抓取或“无代理”抓取的差异资源时,我还有一个疑问,它们被称为单值关联。hibernate中的单值关联是什么?