首页 > 其他分享 >缓存----Ibatis /Hibernate

缓存----Ibatis /Hibernate

时间:2023-05-05 21:32:25浏览次数:46  
标签:Ibatis --- Hibernate Cache cache ---- 缓存 statement cacheModel


iBatis缓存的使用方法及解释 :以iBatis2.3为例,做以下配置即可实现对某些查询进行缓存

1、<settings lazyLoadingEnabled="false"  cacheModelsEnabled="true"  enhancementEnabled="true" />

    注释:

       

lazyLoadingEnabled  延迟加载数据;
            cacheModelsEnabled  全局性启用或关闭SqlMapCilent cache缓存;
            enhancementEnabled  运行时,字节码增强

2、在sqlMap文件中加入cacheModel的配置:

  

<cacheModel  id="model-cache" type="MEMORY" readOnly="true" >
       <flushInterval seconds="60"/>
       <flushOnExecute  statement="insertProduct"/>
       <flushOnExecute  statement="updateProduct"/>
       <flushOnExecute  statement="deleteProduct"/>       <property name="size" value="1000" />
    </cacheModel>

      注意:如果在sqlMapConfig里面设置了useStatementNamespaces="true",那么上面的flushOnExecute中的statement里面需要带上namespace,如<flushOnExecute statement="Product.insertProduct"/>,如果useStatementNamespaces="false",则可以直接按上面的写。

    注释:

            cacheModel的id属性用于后面的statement引用;

            type属性标识采用何种cache方式:

                  MEMORY---使用 reference 类型来管理 cache 的行为。垃圾收集器可以根据 reference类型判断是否要回收 cache 中的数据。MEMORY实现适用于没有统一的对象重用模式的应用,或内存不足的应用

                  LRU---用“近期最少使用”原则来确定如何从 Cache 中清除对象,当 Cache溢出时,最近最少使用的对象将被从 Cache 中清除

                  FIFO---用“先进先出”原则来确定如何从 Cache 中清除对象。当 Cache 溢出时,最先进入 Cache 的对象将从 Cache 中清除。

                  OSCACHE---是OSCache2.0缓存引擎的一个 Plugin。它具有高度的可配置性,分布式,高度的灵活性。 
           flushInterval 属性是配置自动更新缓存的周期,可以是hours,minutes,seconds或milliseconds

           flushOnExecute这是标识什么时候触发更新,statement的名字就是后面的增删改语句的statement的id

3、配置需要进行cache的sql statment:

     

<statement id="getProductList"  parameterClass="int"  cacheModel="model-cache">
          select * from PRODUCT where PRD_CAT_ID = #value#
      </statement>

    注释:cacheModel="model-cache"---指定该语句执行上面定义的model-cache缓存

 

标签:Ibatis,---,Hibernate,Cache,cache,----,缓存,statement,cacheModel
From: https://blog.51cto.com/iwtxokhtd/6247866

相关文章

  • DOM操作----总结
     查找方式一:varobj=document.getElementById(id);varobj=document.getElementById('d1');obj.innerHTML='hellokitty';---innerHTML属性:可以读或者写一个节点的html内容。varobj2=document.getElementById('username');obj2.value='abc�......
  • 连接池/线程池
    线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有......
  • count(列名)、count(1)和 count(*)有什么区别?
    在MySQL中,这几个都是统计操作,很多人在使用的时候,都使用的是count(1),这有没有问题?使用正确?达到了统计效果?我们从效果和效率两方面来分析下执行效果count(*)包括了所有的列,在统计时不会忽略列值为null的数据count(1)用1表示代码行,在统计时不会忽略列值为null的数据co......
  • delphi 互斥量,只允许运行一个实例
    效果图: 代码超简单的:procedureTFrmLogin.FormCreate(Sender:TObject);varFmutex:THandle;begin//创建一个命名的互斥量,确保同一时间只有一个实例在运行//第三个参数是自定义的,随便取的,但一定要是唯一的标识FMutex:=CreateMutex(nil,True,'MyDelphiAppMutex')......
  • 4-2 UserDetails、UserDetailsService和jdbcAuthentication
          ......
  • 求最大值(函数模板)
    一、问题描述:两个类如下设计:类Time有三个数据成员,hh,mm,ss,分别代表时,分和秒,并有若干构造函数和一个重载-(减号)的成员函数。类Date有三个数据成员,year,month,day分别代表年月日,并有若干构造函数和一个重载>(<)(大于号或者小于号)的成员函数。要求设计一个函数模板template<classT>Tma......
  • cryptohack wp day(3)
    第二节模运算----第一题(GCD)在做这道题前,了解下欧几里得算法:欧几里得算法,也叫辗转相除法,用于求解两个非负整数a和b的最大公约数(GreatestCommonDivisor,GCD),即能够同时整除它们的最大正整数。算法的基本思想是,通过不断求解a和b的余数的最大公约数,最终可以得到a和b的最大公约......
  • 分布式系统复习
    这啥玩意都没讲的课要考了。。。1.云计算与大数据1.1云计算的3个服务模型IaaS,基础设施即服务PaaS,平台即服务SaaS,软件即服务云计算的3中服务模型之间的关系:IaaS提供虚拟化的硬件资源,支撑PaaS对平台的虚拟化,而PaaS又支撑了SaaS对软件的虚拟化。1.2DIKW体系Data(数据)、Info......
  • 分水岭算法的理解和应用
    原文:https://blog.csdn.net/Evonnehyf/article/details/104066799分水岭算法主要思想图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值代表高度。分水岭就是灰度值较大的像素连成的线。二值化阈值可以理解为水平面,比灰度二值化阈值小的像素区域会被淹没。随着水位线的......
  • 使用Angular Universal时的重要注意事项
    介绍尽管AngularUniversal项目的目标是能够在服务器上无缝渲染Angular应用程序,但您应该考虑一些不一致之处。首先,服务器和浏览器环境之间存在明显的差异。在服务器上渲染时,应用程序处于短暂或“快照”状态。应用程序被完全渲染一次,返回完整的HTML,而整个过程中的产生的状态被销毁......