辛星简单比较下Hibernate中的一级缓存和二级缓存

来源:互联网 发布:anaconda linux 使用 编辑:程序博客网 时间:2024/06/15 07:19

       1.按照存放数据的形式:一级缓存是相互关联的持久化对象,而二级缓存则是数据的散装对象。

        2.按照缓存的范围:一级缓存通常是事务范围,每个事务都有单独的一级缓存,而二级缓存则是进程范围或者是集群范围,缓存被同一个进程或者集群范围中的所有事务共享

        3.按照并发访问策略,一级缓存由于每个事务都拥有单独的一级缓存,因此不会出现并发问题,因此无须提供并发访问策略。二级缓存由于多个事务会同时访问二级缓存中的相同数据,因此必须提供适当的并发访问策略,来保证特定的事务隔离级别。

        4.按照数据过期策略,处于一级缓存中的对象永远不会过期,除非应用程序显示的晴空,而二级缓存则必须提供过期策略,比如基于 内存的缓存中对象的最大数目,允许对象处于缓存中的最长时间,以及允许对象处于缓存中的最长空闲时间。

        5.按照物理介质来分,一级缓存肯定是保存在内存中,而二级缓存则可以保存在内存或硬盘上,对象的散装数据首先存放到基于 内存的缓存中,当内存中对象的数目达到数据过期策略的最大值的时候,就会把其余的对象写入到硬盘上。

       6.按照软件实现来分,一级缓存由Hibernate的Session实现中自带,二级缓存则是需要使用插件,Hibernate提供了缓存适配器。

0 0