【发布时间】:2011-11-10 17:07:57
【问题描述】:
我是 Hibernate 对象持久性的新手。我正在读一本书,试图了解惰性设置为假、急切和立即获取之间的区别,但我没有看到任何区别。有什么帮助吗??
提前致谢!
【问题讨论】:
我是 Hibernate 对象持久性的新手。我正在读一本书,试图了解惰性设置为假、急切和立即获取之间的区别,但我没有看到任何区别。有什么帮助吗??
提前致谢!
【问题讨论】:
立即获取和急切获取之间的主要区别在于立即获取,有两个单独的查询触发一个针对拥有对象和另一个针对关联对象。但是对于 Eager fetching,只会触发一个查询,包括内部联接/外部联接来获取与实体关联的对象。
【讨论】:
我相信“立即”是“渴望”的同义词(渴望是 Hibernate 实现的 JPA,定义)
听起来很懒惰。在你必须做之前不要做任何事情。 Eager 的意思是……听起来。
如果 Foo 有一个 Collection,并且您将其设置为惰性,则仅当您需要该集合的内容时才被选中、加载等,而如果它是 Eager,它将在加载时加载 Bars福。如果您急切地加载实体集合而急切地加载实体集合等等,这可能会出现问题。
但是,如果您让一切都变得懒惰,那么您可能会遭受过多的查询和往返行程的困扰。您必须选择适合您使用实体的方式。
如果您想要一条经验法则,请从懒惰开始..
【讨论】: