hibernate小积累

本文探讨了Hibernate中一对多关联映射的fetch与lazy属性的作用方式,以及不同设置下产生的SQL语句差异;同时介绍了Hibernate的一级缓存机制,并强调了级联操作与lazy属性之间的区别;最后提到了配置二级缓存时需要注意的顺序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

①一对多的关联映射中set集合中fetch与lazy:

当fetch="join"的时候当加载teacher的时候会立即加载student,此时lazy="false",即延迟加载自动取消,即发出一条语句:

  select
        teacher0_.id as id0_1_,
        teacher0_.name as name0_1_,
        teacher0_.age as age0_1_,
        students1_.teacherid as teacherid0_3_,
        students1_.id as id3_,
        students1_.id as id1_0_,
        students1_.name as name1_0_,
        students1_.age as age1_0_ 
    from
        t_teacher teacher0_ 
    left outer join
        t_studnet students1_ 
            on teacher0_.id=students1_.teacherid 
    where
        teacher0_.id=?


当fetch="select"的时候当加载teacher的时候会立即加载student,此时lazy="true",

   select
        teacher0_.id as id0_0_,
        teacher0_.name as name0_0_,
        teacher0_.age as age0_0_ 
    from
        t_teacher teacher0_ 
    where
        teacher0_.id=?
select
        students0_.teacherid as teacherid0_1_,
        students0_.id as id1_,
        students0_.id as id1_0_,
        students0_.name as name1_0_,
        students0_.age as age1_0_ 
    from
        t_studnet students0_ 
    where
        students0_.teacherid=?

②hibernate缓存:
一级缓存:session级缓存是缓存实体对象的,不会缓存对象属性


③级联cascade与lazy,不要错误的认为各种加载会产生级联现象,级联操作仅仅存在各个关联对象中,1000个session对象在缓存中,只要有关系就会级联


④配置二级缓存的时候,要注意配置顺序,比如先是session-factory,再是property,mapping,class


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值