张浩BIT 2011-10-10
上次用来 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 出来了。