hibernate懒加载用法和好处

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starry7953810/article/details/78063322
懒加载(延迟加载):
	只有持久状态的对象才能懒加载
	||瞬时状态(不用的时候被垃圾回收处理)
	||持久状态(经过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语句


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




展开阅读全文

没有更多推荐了,返回首页