美文网首页
Hibernate15-Hibernate一级缓存

Hibernate15-Hibernate一级缓存

作者: 我相信你爱过gg | 来源:发表于2017-05-07 21:22 被阅读11次

一级缓存生命周期很短于session生命周期一致,所以一级缓存也叫session级缓存或事务级缓存。位于缓存中的对象处于持久化状态,它和表中的相关记录对应,session能够在某些时间点,按照缓存中持久化对象的属性变化来同步数据库中表的记录(session关闭),这一过程称为缓存清理。当session关闭后一级缓存也就消失了。

注:当我们通过session获得一个对象以后,如果在本session没有关闭之前,再次获得之前获取过的数据,将直接从Session缓存中获取,而不是再次查询数据库。当然,你使用的方法必须支持一级缓存的读取,list()方法则不可以。

一级缓存原理,session缓存是由他的实现类sessionImpl中定义的一些结合属性构成的,运行时保证有一个引用在关联着某个持久化对象,保持它的生命周期不会结束。缓存是由HashMap<OID,Object>保存。OID是Session自己算出的主键,object是,持久化对象。

管理一级缓存:
    evict(Object) 移除对象
    clear() 清空缓存
    contains(Object) 判断缓存当中有没有指定对象
    flush() 刷新缓存,让缓存中的数据解析到同步列表

注:
    例如有两个用户,用户A和用户B,当用户A获取到一条记录,用户B在你获取完这条记录后,修改了这条记录,如果用户A在后续操作中修改了找条记录,在关闭Session的时候,会将这条记录提交到数据库,而这时数据库的记录则变成了,用户A修改的记录了。当然前提是你开启了事务,如果你没有开启事务则不会提交这条数据。

测试是否支持缓存:
    使用同一个Session,使用不同的方法进行查询,只要输出sql语句那么久说明不支持缓存的读,如果没有输出sql说明支持,缓存的读取。注意,必须查询的数据是同一个数据。

相关文章

  • Hibernate15-Hibernate一级缓存

    一级缓存生命周期很短于session生命周期一致,所以一级缓存也叫session级缓存或事务级缓存。位于缓存中的对...

  • 你真的懂Mybatis缓存机制吗

    MyBatis自带的缓存有一级缓存和二级缓存。 一级缓存 Mybatis的一级缓存是指Session缓存。一级缓存...

  • mybatis一级缓存和二级缓存

    MyBatis官网MyBatis拥有自带一级缓存和二级缓存 一级缓存: MyBatis是默认开启一级缓存,一级缓存...

  • [java]38、MyBatis缓存

    1、缓存 MyBatis的缓存分为一级缓存、二级缓存,用于缓存select的结果 1.1、一级缓存 一级缓存是存放...

  • java基础面试题总结——其他大型框架

    1. 简述mybatis缓存机制的实现原理 mybatis缓存分为一级缓存和二级缓存: 一级缓存 概念:一级缓存即...

  • MyBatis缓存书目录

    MyBatis缓存 MyBatis介绍 MyBatis一级缓存 1、什么是一级缓存? 为什么使用一级缓存? 2、M...

  • MyBatis(4)一级缓存,二级缓存

    MyBatis的缓存,包括一级缓存,二级缓存。 什么是一级缓存? 一级缓存指的就是sqlsession,在sqls...

  • Mybatis缓存机制:一级缓存与二级缓存

    MyBatis的缓存分为一级缓存(本地缓存)和二级缓存 1、一级缓存 MyBatis的一级缓存是默认会开启的并且不...

  • Mybatis缓存

    mybatis分为一级缓存和二级缓存,在默认的情况下,Mybatis只会开启一级缓存 一级缓存 一级缓存是一次会话...

  • 一级缓存体验

    1. 测试一级缓存 2. 测试结果 一级缓存也称本地缓存,sqlSession级别的缓存,一级缓存是一直开...

网友评论

      本文标题:Hibernate15-Hibernate一级缓存

      本文链接:https://www.haomeiwen.com/subject/yzdptxtx.html