Hibernate三级缓存

来源:互联网 发布:dota2怎么看数据 编辑:程序博客网 时间:2024/06/05 17:11

首先:

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

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”

1 0
原创粉丝点击