Hibernate三级缓存

首先:

什么是缓存?
数据库在内存中开辟一个临时的容器,容器中存储数据库表中的数据,容器位于数据库和访问层之间。

Hibernate的三级缓存

一级缓存(session级缓存):

一级缓存又称为session缓存,数据被缓存在session中,生命周期是线程级别的。在一个session中查询同一个对象两次,查询时,hibernate首先在session缓存中查找对象,如果没找到数据就到数据库中去查询。因此,在同一个session中查询一个对象两次,就只会发出一条sql语句。

二级缓存(session的公共缓存,sessionFactory级别的缓存,jvm级缓存):

二级缓存,又称为SessionFactory缓存,是进程级别的缓存。可以在集群中使用。由生命比较长,所以需要使用缓存的清理算法来进行缓存清理:LRU,FIFO等。

二级缓存的使用我稍后再写。

三级缓存(查询缓存):

在一级缓存和二级缓存的过程中,查询数据时不会使用缓存。要实现查询的时候使用缓存,那么需要开启查询缓存。查询缓存在二级缓存的基础上实现的。

缓存算法

LRU(Least Recently Used):这种算法是在每个对象中维护一个访问的时间变量,每次访问后,时间都会更新,当新的对象需要存放到缓存时,替换那个按时间排序最后的对象。

LFU(Least Frequently Used):这种算法是每个对象记录了对象访问的次数(即命中率),当新的对象需要存放到缓存时,替换那个访问次数最少的对象。

FIFO(First In First Out):这种算法是将缓存中的对象存放成一个数组,当新的对象需要存放到内存中是,替换最先存放到缓存的对象。

使用时通常在缓存配置文件中加入:MemoryStoreEvictionPolicy=”LRU”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值