hibernate的缓存机制,一级缓存和二级缓存

为了提高系统性能,hibernate也使用了缓存机制。在hibernate框架中,主要包含两个方面的缓存,一级缓存和二级缓存。hibernate缓存的作用主要表现在以下两个方面: 1) 通过主键(ID)加载数据的时候 .2) 延迟加载中。


 一级缓存:hibernate的一级缓存是由session提供的,因此它只存在session的生命周期中。也就是说session关闭的时候该session所管理的一级缓存也随之被清除。hibernate的一级缓存是session所内置的,默认开启,不能被卸载,也不能进行任何配置。在缓存中的对象,具有持久性,session对象负责管理.一级缓存的优点是使用同一个session对象多次查询同一个数据对象,仅对数据库查询一次。一级缓存采用的是Key-Value的MAP方式来实现的。在缓存实体对象时,对象的主关键字ID是MAP的Key,实体对象就是对象的值。所以说一级缓存是以实体对象为单位进行存储的。访问的时候使用的是主键关键字ID。一级缓存使用的是自动维护的功能。但可以通过session提供的手动方法对一级缓存的管理进行手动干预。evict()方法用于将某个对象从session的一级缓存中清除。clear()方法用于将session缓存中的方法全部清除。

  二级缓存:二级缓存的实现原理与一级缓存是一样的。也是通过Key-Value的Map来实现对对象的缓存。二级缓存是作用在SessionFactory范围内的。因此它它可被所有的Session对象所共享。需要注意的是放入缓存中的数据不能有第三方的应用对数据进行修改。

  二级缓存默认关闭,需要程序员手动开启。首先导入ehcache.jar二级缓存包。然后,在src下添加ehcache.xml配置,同时,在hibernate.cfg.xml中启用二级缓存<property name="hibernate.cache.use_second_level_cache"> true</property><property name="hibernate.cache.provider_class"> net.sf.ehcache.hibernate.EhCacheProvider</property>。第三:指定使用二级缓存缓存哪种类型的对象,在hbm.xml中添加<cache region="sampleCache1" usage="read-only"/>


具体根据你的业务需求去配置。 


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值