【问题标题】:What's the difference between lazy = false, eager and immediate fetching?懒惰=假,急切和立即获取有什么区别?
【发布时间】:2011-11-10 17:07:57
【问题描述】:

我是 Hibernate 对象持久性的新手。我正在读一本书,试图了解惰性设置为假、急切和立即获取之间的区别,但我没有看到任何区别。有什么帮助吗??

提前致谢!

【问题讨论】:

标签: java hibernate


【解决方案1】:

立即获取和急切获取之间的主要区别在于立即获取,有两个单独的查询触发一个针对拥有对象和另一个针对关联对象。但是对于 Eager fetching,只会触发一个查询,包括内部联接/外部联接来获取与实体关联的对象。

【讨论】:

    【解决方案2】:

    我相信“立即”是“渴望”的同义词(渴望是 Hibernate 实现的 JPA,定义)

    听起来很懒惰。在你必须做之前不要做任何事情。 Eager 的意思是……听起来。

    如果 Foo 有一个 Collection,并且您将其设置为惰性,则仅当您需要该集合的内容时才被选中、加载等,而如果它是 Eager,它将在加载时加载 Bars福。如果您急切地加载实体集合而急切地加载实体集合等等,这可能会出现问题。

    但是,如果您让一切都变得懒惰,那么您可能会遭受过多的查询和往返行程的困扰。您必须选择适合您使用实体的方式。

    如果您想要一条经验法则,请从懒惰开始..

    【讨论】:

    • 对于 Doug 的帖子搜索“n+1 查询问题”中已经提到的问题,例如 this SO 帖子。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多