Hibernate缓存机制和MyBatis缓存机制

Hibernate缓存机制和MyBatis缓存机制Hibernate缓存机制和MyBatis缓存机制

大家好,又见面了,我是你们的朋友全栈君。

原文地址:https://my.oschina.net/u/1445731/blog/416200?p=%7B%7BtotalPage%7D%7D

Mybatis缓存

分为1级缓存和2级缓存,2级缓存在sessionfactory中,1级缓存在session中。

  1. session中的缓存在session连接关闭并被连接池回收时清理,或者手动清理

  2. sessionfactory中的缓存需要在mybatis配置文件中手动配置,配置如下:

    [html] 
    view plain  
    copy

    1. <setting name=“cacheEnabled” value=“true”/>  

    [html] 
    view plain  
    copy

    1. <mapper namespace=“dao.userdao”>  
    2.    …  select statement …       <!– Cache 配置 –>  
    3.     <cache          
    4.         eviction=“FIFO”  
    5.         flushInterval=“60000”  
    6.         size=“512”  
    7.         readOnly=“true” />  
    8. </mapper>  

flushInterval:刷新轮询时间,每隔这个时间后缓存被清理一次。

参考博客园地址:http://www.cnblogs.com/zemliu/archive/2013/08/05/3239014.html

Hiberante缓存

一、why(为什么要用Hibernate缓存?)

Hibernate是一个持久层框架,经常访问物理数据库。

为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。

缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。

二、what(Hibernate缓存原理是怎样的?)

Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存。

1.Hibernate一级缓存又称为“Session的缓存”。

Session内置不能被卸载,Session的缓存是事务范围的缓存(Session对象的生命周期通常对应一个数据库事务或者一个应用事务)。

一级缓存中,持久化类的每个实例都具有唯一的OID。

2.Hibernate二级缓存又称为“SessionFactory的缓存”。

由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。

第二级缓存是可选的,是一个可配置的插件,默认下SessionFactory不会启用这个插件。

Hibernate提供了org.hibernate.cache.CacheProvider接口,它充当缓存插件与Hibernate之间的适配器。

什么样的数据适合存放到第二级缓存中?   

1) 很少被修改的数据   

2) 不是很重要的数据,允许出现偶尔并发的数据   

3) 不会被并发访问的数据   

4) 常量数据   

不适合存放到第二级缓存的数据?   

1) 经常被修改的数据   

2) 绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发   

3) 与其他应用共享的数据。

3.Session的延迟加载实现要解决两个问题:正常关闭连接和确保请求中访问的是同一个session。

Hibernate session就是java.sql.Connection的一层高级封装,一个session对应了一个Connection。

http请求结束后正确的关闭session(过滤器实现了session的正常关闭);延迟加载必须保证是同一个session(session绑定在ThreadLocal)。

4.Hibernate查找对象如何应用缓存?

当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;

查不到,如果配置了二级缓存,那么从二级缓存中查;

如果都查不到,再查询数据库,把结果按照ID放入到缓存删除、更新、增加数据的时候,同时更新缓存。

参考:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106202.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 卸载pycharm重新安装_乌班图怎么下载pychsrm

    卸载pycharm重新安装_乌班图怎么下载pychsrmpycahrm安装首先要去pycharm的官方网站下载Linux版本的pycharm安装包。如果想要下载以前版本的pycharm可以登录下方的网站去下载。https://www.jetbrains.com/pycharm/download/other.html安装包下载完毕后应该是一个后缀为:.tar.gz的压缩文件。此处我将下载的安装包放到了Downloads目录下(放在哪里随意)…

    2022年8月29日
    2
  • 黑盒测试的测试用例方法_黑盒测试是基于什么的测试

    黑盒测试的测试用例方法_黑盒测试是基于什么的测试测试用例

    2022年10月3日
    0
  • 微软Office2007专业增强版 集成最新SP3[通俗易懂]

    微软Office2007专业增强版 集成最新SP3[通俗易懂]微软Office2007专业增强版,集成最新SP3补丁包,集成序列号,安装完后自动激活,不仅在功能上进行了优化,而且安全性稳定性更得到了巩固。  MicrosoftOfficeProfessionalPlus2007包括:  MicrosoftOfficeExcel2007  MicrosoftOfficeOutlook2007  MicrosoftOfficePower…

    2022年7月19日
    26
  • 126邮箱登录html,126邮箱登陆界面[通俗易懂]

    126邮箱登录html,126邮箱登陆界面[通俗易懂]大家常常会使用一些手机软件,怎么登录126邮箱,操作简单,容易理解,下面大家一起来学习一下吧。网易邮箱大师6.10.3苹果7IOS12安装并运行网易邮箱大师客户端。在登录栏中填写126邮箱账号。在密码栏填写邮箱密码。找到并点击添加选项。总结如下。网易126邮箱您的专业电子邮局,15年邮箱运营经验,系统快速稳定,垃圾邮件拦截率超过99%,邮箱容量自动翻倍,支持高达3G超大附件,提供免费网盘及手机号码…

    2025年5月23日
    0
  • signature=26e3fa40cff08d52a53392bd149aa17b,Window Element, a Profiled Pultruded Panel, a System of a…

    signature=26e3fa40cff08d52a53392bd149aa17b,Window Element, a Profiled Pultruded Panel, a System of a…Thepresentinventiongenerallyrelatestothetechnicalfieldofhousesandbuildingsandtechniquesofbuildinghousesandbuildingsandmoreparticularlyrelatestonovelwindowelementsandpanels…

    2022年6月9日
    32
  • GTest问题_itest.n z

    GTest问题_itest.n z1、cmkae出现”C:/Users/xxx/gcc/bin/gcc.exe”isnotabletocompileasimpletestprogram.问题在camke时添加-DCMAKE_C_COMPILER=gcc,-DCMAKE_C_COMPILER=gcc-DCMAKE_CXX_COMPILER=g++,-DCMAKE_MAKE_PROGRAM=make指定gcc、g++与make2、测试私有成员函数出现__xfer_bufptrsredeclaredwithdif

    2022年9月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号