hibernate懒加载用法和好处

懒加载(延迟加载):
	只有持久状态的对象才能懒加载
	||瞬时状态(不用的时候被垃圾回收处理)
	||持久状态(经过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语句


懒加载的好处:
为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值