懒加载(延迟加载):
只有持久状态的对象才能懒加载
||瞬时状态(不用的时候被垃圾回收处理)
||持久状态(经过session管理的这些对象持久状态的对象,例如:save get update 被它操作过的对象)
||游离状态(session.close(),flush clear commit 后变成游离状态)
瞬时->持久状态->游离状态
get是立即加载,load是懒加载
当真正需要数据的时候,hibernate才从数据库中加载数据
内存更有效率的使用
1:关联级别
2:类级别
3:属性级别
在配置文件中
可以在下面三个标签中(class ,property ,set )添加属性:lazy=“true”来开启懒加载,默认是true,可设置为false
来关闭懒加载;
<hibernate-mapping>
<class name="com.entity.Orders" table="ORDERS" schema="STARRY">
<id name="orid" type="java.lang.Long">
</id>
<property name="address" type="java.lang.String">
</property>
<set name="goodses" table="OANDG" schema="STARRY">
</set>
</class>
</hibernate-mapping>
然后在使用get,load方法的时候:
Orders order =(Orders) se.get(Orders.class,3l);
Set<Goods> set =order.getGoodses();
上面这段代码:注释第二行的时候,会产生一条select语句,已经加载过了,执行两条完成会产生两条select语句
Orders order =(Orders) se.load(Orders.class,3l);
Set<Goods> set =order.getGoodses();
上面这段代码:注释第二行的时候,不会产生select语句,已经加载过了,执行两条完成会产生一条select语句
懒加载的好处:
为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载。
hibernate懒加载用法和好处
最新推荐文章于 2023-02-14 11:43:28 发布