一、hibernate的session介绍 Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应。Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush)。也叫一级缓存。在 ...
分类:
Web程序 时间:
2018-09-22 18:27:28
阅读次数:
212
上一篇[MyBatis框架原理2:SqlSession运行过程][1]介绍了MyBatis的工作流程,其中涉及到了MyBatis缓存的使用,首先回顾一下工作流程图: 如果开启了二级缓存,数据查询执行过程就是首先从二级缓存中查询,如果未命中则从一级缓存中查询,如果也未命中则从数据库中查询。MyBati ...
分类:
其他好文 时间:
2018-09-22 00:58:11
阅读次数:
177
1.Executor介绍: Executor是mybatis的核心接口之一,其中定义了数据库操作的基本方法,它的子类结构图如下:这这张关系图中,涉及到了模板方法模式和装饰器模式。BaseExecutor是一个抽象父类,定义了一级缓存和事务相关的公共的固定不变的方法,同时定义了doUpdate,doQ ...
分类:
其他好文 时间:
2018-09-20 11:03:52
阅读次数:
184
叙:hibernate中有一个特色,即,hibernate的持久态能自动更新数据库,不需要手动设置更新操作代码,而持久态的这一特色所依据的便是hibernate的一级缓存技术。那么之前学过了hibernate的三态,现在学习一下一级缓存; hibernate的一级缓存 首先,要明白什么是缓存; 什么 ...
分类:
Web程序 时间:
2018-09-15 19:19:42
阅读次数:
191
hibernate的三种状态: 1.瞬时态:对象里面没有id值,对象与session没有关联 类似,把class类new出来,不存进session 2.持久态:对象里面有id值,对象与session关联 类似,数据库取出数据,设置id值 3.托管态:对象有id值,对象不与session关联 创建一个 ...
分类:
Web程序 时间:
2018-09-13 20:09:23
阅读次数:
172
1、一级缓存 MyBatis 默认开启了一级缓存,一级缓存是在SqlSession 层面进行缓存的。即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数, 只会进行一次数据库查询,然后把数据缓存到缓冲中,以后直接先从缓存中取出数据,不会直接去查数据库。 ? 但是不同的 ...
分类:
其他好文 时间:
2018-09-12 16:57:42
阅读次数:
161
缓存:为数据库的查询进行缓存,是减少数据库压力的主要捷径,官方介绍主要有一级缓存和二级缓存,下面简单介绍这两种缓存的区别。 一级缓存:session级别缓存,作用于当前会话。 二级缓存:SessionFactory级别缓存,作用于整个SessionFactory,多个会话之间共享缓存。 ...
分类:
其他好文 时间:
2018-09-11 14:10:06
阅读次数:
114
一. Hibernate中的事务 1. 事务的回顾 1.1 什么是事务(Transaction)(面试重点) 是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,sql 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常 ...
分类:
Web程序 时间:
2018-09-03 02:43:14
阅读次数:
201
mybatis中的缓存,有一个疑问为什么一级缓存需要先放一个占位值,查询到结果后再移除,放入真正的值???代码标红处 1、二级缓存 这也是为什么说二级缓存是mapper级别的 2、一级缓存 ...
分类:
其他好文 时间:
2018-08-29 01:15:16
阅读次数:
160
在实际的项目开发中,通常对数据库的查询性能要求很高,而mybatis提供了查询缓存来缓存数据,从而达到提高查询性能的要求。 mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存时mapper级别的缓存,二级缓存是多个SqlSession共享的。 myba ...
分类:
其他好文 时间:
2018-08-28 15:27:42
阅读次数:
308