惰性载入(
lazyloading), 是hibernate精华。
举例子吧
Branch
b = session.load(Branch.class,id);
执行这条的时候,
不会马上产生 select * from branch where id=?
因为这个时候还不需要
branch的数据.
如果你下面执行
b.getName();
那么这时候才产生
select语句, 因为这个时候才真正需要数据.
Branch
b = session.load(Branch.class,id);
user.setBranch(b);
这两条语句没有用到
b里面的任何数据, 当然就不会生成 select 语句了
例如:---------------红字部分------------------
<hibernate-mapping>
<class name="hevttc.article.domain.AritcleUser" table="aritcleUser" lazy="false" schema="dbo" catalog="article">
<id name="userid" type="java.lang.Integer">
<column name="userid" />
<generator class="assigned" />
</id>
<property name="popedomId" type="java.lang.Integer">
<column name="popedomId" not-null="true" />
</property>
<property name="userName" type="java.lang.String">
<column name="userName" length="50" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" />
</property>
<property name="userClassId" type="java.lang.Integer">
<column name="userClassId" />
</property>
<property name="remark" type="java.lang.String">
<column name="remark" length="100" />
</property>
<property name="addNum" type="java.lang.Integer">
<column name="addNum" />
</property>
<property name="articleCategoryId" type="java.lang.Integer">
<column name="articleCategoryId" />
</property>
</class>
</hibernate-mapping>