我试图了解 Hibernate 之间的LEFT JOIN区别LEFT JOIN FETCH。
谁能解释一下?
谢谢
“fetch”告诉hibernate现在加载它而不是让它延迟加载。参考指南有一整章处理这些事情,很容易熟悉。
您可以使用它FETCH来调整您的应用程序性能。它是 Hibernate 的正交概念之一,它回答了如何 (获取样式)关联被获取的问题。有 4 种样式:select/ subselect/ batch/ join。
第二个概念是何时 (获取时间)应该获取它。您可以使用 Hibernate 定义的 6 个属性之一对其进行配置,其中最多 4 个属性是:eager、lazy、extra lazy、proxy.( hibernate-core )
默认使用休眠:
加入
JOIN或 ( LEFT JOIN) 将只返回父对象。
加入抓取
JOIN FETCH(或LEFT JOIN FETCH)将收集所有关联及其所有者对象。这意味着将在同一个选择中检索该集合。这可以通过启用 Hibernate 的统计信息来显示。
(左/外)连接提取非常适合 *ToOne(多对一或一对一)关联。它与非袋子一起使用,但要注意当表的基数很高时可能发生的笛卡尔问题。请注意,select在大多数情况下,获取样式更快。
请注意,更少的select语句是hibernate和数据库之间更少的往返的同义词,但它不是更好的性能的同义词。