上次用來 Eclipselink 的 JPA 優化 Query 須要用到 EclipseLink 本身的
eclipselink.left-join-fetch
特 有的hint name 來 實現。 今天在用到 Hibernate 的 一個 many-to-one 的 的時候看到它默認的實現是採用 select fetch 的方式 也就是 在取 many 邊的表 後 還會用 select 方式去取 one 那邊的表。 從日誌中看到不少sql 語句, 聯想到應該也有相應的join fetch。 經過 查看 dtd ,
果真在 many-to-one 裏面有個 fetch 屬性,它有兩個值: select 和 join。 這個 select 應該是默認的實現。當改爲join 後看到 僅有的一個 sql 感受 or mapping 也仍是不錯的說。
<many-to-one name="columnId" class="DataArchitectrueColumn"
column="COLUMN_ID" lazy="false" fetch="join"/>
若是 fetch="join" 的話, 這個lazy 配置成 true 也沒有啥做用了, 都一把 join 出來了。 sql