惰性载入(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>
本文介绍Hibernate框架中的懒加载(lazy loading)机制。通过实例演示如何使用Session的load方法获取对象而不立即触发SQL查询,仅在实际需要数据时执行查询,以此提高应用性能。
550

被折叠的 条评论
为什么被折叠?



