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