我试图了解 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和数据库之间更少的往返的同义词,但它不是更好的性能的同义词。