hibernate缓存机制(二)-一级缓存解决n+1问题

本文探讨了Hibernate的一级缓存机制,解释了如何利用一级缓存解决N+1查询问题。一级缓存是Session级别的,生命周期与Session同步,不同Session之间无法共享。当查询实体对象时,一级缓存会存储查询结果,避免重复SQL查询。然而,当Session关闭后,一级缓存失效,可能导致N+1问题。为解决此问题,文章提出了引入二级缓存的建议。
摘要由CSDN通过智能技术生成

前面已经提到了n+1问题,想了解n+1问题请访问hibernate缓存机制(一)-n+1问题

此篇文章我们瞎扯一下hibernate的一级缓存、hibernate的一级缓存是怎么解决n+1的问题以及存在的弊端。

一、hibernate一级缓存:

1.Session 级别的缓存,它同session邦定。它的生命周期和session相同。Session消毁,它也同时消毁;管理一级缓存,一级缓存无法取消,用两个方法管理,clear(),evict()
2.两个session 不能共享一级缓存,因它会伴随session的生命周期的创建和消毁;
3.Session缓存是实体级别的缓存,就是只有在查询对象级别的时候才使用,如果使用HQL和SQL是查询属性级别的,是不使用一级缓存的!切记!!!!

我们来看看hibernate提供的一级缓存:

/**

             * 此时会发出一条sql,将所有学生全部查询出来,并放到session的一级缓存当中

             * 当再次查询学生信息时,会首先去缓存中看是否存在,如果不存在,再去数据库中查询

             * 这就是hibernate的一级缓存(session缓存)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值