Hibernate二级缓存问题

来源:互联网 发布:重庆网络推广外包公司 编辑:程序博客网 时间:2024/06/05 01:16

1.缓存的定义

    计算机领域非常通用的概念,位于cup和内存之间的临时存储器,它介于应用程序和永久性数据存储资源(如硬盘上的文件或者数据)之间,其作用就是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行数据。缓存中的数据是数据存储源中数据的拷贝。缓存的物理介质通常是内存。

2.缓存的工作原理:

   当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;若没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入到内存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用到内存。

3.二级缓存:

     当cpu调用大量数据时,就可以避开内存直接从缓存中调用,从而加快读取速度,最初缓存只有一级,二级缓)出现是为了协调一级缓存与内存之间的速度。二级缓存比一级缓存速度更慢,容量更大,主要就是做一级缓存和内存之间数据临时交换的地方用。
4.hibernate中的二级缓存:

        总述:二级缓存通俗的说就是减少对数据库的访问,提高效率,可以供多个session使用,当第一次访问数据库的时候,向数据库发送sql语句,并把数据保存到sessionFacotory中供以后的使用,以后的访问不会再发送sql语句去数据库查找了,而是会从sessionFacotory中找。所以二级缓存中如果多次查询的时候就只发一次sql语句。

5.hibernate中提供了两个级别的缓存

         (1)第一 级别的缓存是Session级别的缓存。它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预。

          (2)第二级别的缓存是SessionFacotory级别的缓存,它属于进程范围的缓存。

6.SessionFacotory的缓存可以分为两类:

     (1)内置缓存:Hibernate自带的,不可卸载,通常在hibernate的初始化阶段,hibernate会把映射元数据和预定义的sql语句刚到sessionFacotory的缓存中,映射元数据是映射文件中数据的复制,而预定义sql语句时hibernate根据映射元数据推到处理的,该内置缓存是只读的。

      (2)外置缓存(二级缓存):一个可以配置的缓存插件,在默认情况下,sessionFactory不会启用这个缓存插件,外置缓存中的数据是数据库数据的复制,外置缓存的物理介质可以是内存或者硬盘。

7.缓存中存放的数据:

       (1)适合放入二级缓存中的数据:

             很少被修改;不是很重要的数据,允许出现偶尔的并发问题;

         (2)不适合放入二级缓存中的数据:

                        经常被修改,财务数据,绝对不允许出现并发问题;与其他应用数据共享的数据。

 

详细内容链接请点击   http://blog.csdn.net/zhoulenihao/article/details/25070575