Hibernate3多了fetch属性,有两种状态select和join,设置在主表一方,如:
<set name="addresses" inverse="true" lazy="false" fetch="join">
<key>
<column name="customerid" length="10" />
</key>
<one-to-many class="ch9.SimpleOneToMany.Address" />
</set>
当fetch=select的时候,我们查询从表数据时候,首先会根据主表查处主表对象,然后根据主表id生成另一个select语句去查询从表数据,产生1+N的查询效果
当fetch=join的时候,hibernate会自动用一条外连接语句同时查询主表和从表数据
但有一点需要说明的是,这个fetch属性 只适用于使用get/load或creteria方式进行的查询,如果使用HQL查询则不起作用,除非在HQL中使用join操作