您的位置:首页 > 其它

hibernate三级缓存概括

2015-10-12 00:00 253 查看
摘要: 对hibernate三级缓存的个人理解与学习

Hibernate三级缓存
一级缓存(session级别缓存):

1、session关闭后,缓存就没了;hibernate发出一条sql查询,若缓存中没有,则从数据库中查,查到之后放入缓存

2、以id为key值缓存对象

二级缓存(sessionFactory级别缓存):

1.hibernate没有提供相应的二级缓存组件,所以需要额外的二级缓存包EHcache

2.hibernate二级缓存存的仅仅是对象,就算只想查询这个对象的某几个属性,还是会把这个对象的所有信息查询出来。

3.当一级缓存关闭之后,一级缓存就失效了,若这个对象配置了二级缓存,就算session关闭,hibernate会从二级缓存(sessionFactory)中查到数据。

三级缓存(查询缓存:sessionFactory级别):

1、查询缓存是专门针对各种查询操作进行缓存。查询缓存会在整个SessionFactory的生命周期中起作用,存储的方式也是采用key-value的形式来进行存储的。

2、查询缓存中的key是根据查询的语句、查询的条件、查询的参数和查询的页数等信息组成的。而数据的存储则会使用两种方式,使用SELECT语句只查询实体对象的某些列或者某些实体对象列的组合时,会直接缓存整个结果集。而对于查询结果为某个实体对象集合的情况则只会缓存实体对象的ID值,以达到缓存空间可 以共用,节省空间的目的。

3、在使用查询缓存时,除了需要设置hibernate.cache.provider_class参数来启动二级缓存外,还需要通过hibernate.cache.use_query_cache参数来启动对查询缓存的支持。

注:缓存一般只对查询比较对,更改比较少的数据进行设置,若修改较多反而会影响hibernate的效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hibernate缓存