二级缓存

hibernate二级缓存

元气小坏坏 提交于 2019-11-26 20:28:59
缓存的作用:  提高程序的性能 ehcache:Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大 ehcache的特点 1.够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 2. 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 3. 够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。 4. 够轻量 核心程序仅仅依赖slf4j这一个包,没有之一! 5.好扩展 Ehcache提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持的插件多 6. 监听器 缓存管理器监听器 (CacheManagerListener)和 缓存监听器(CacheEvenListener),做一些统计或数据一致性广播挺好用的 7. 分布式缓存 从Ehcache 1.2开始,支持高性能的分布式缓存,兼具灵活性和扩展性 hibernate(5.2

Hibernate之二级缓存

回眸只為那壹抹淺笑 提交于 2019-11-26 17:56:57
Hibernate之二级缓存 1. 为什么需要缓存 拉高程序的性能 数据库: 关系型数据库:数据与数据之间存在关系(联系)的数据库 mysql/Oracle、sqlserver 非关系型数据库:数据与数据之间是不存在关系的,key-value 1、基于文件存储的数据库:ehcache 2、基于内存存储的数据库:redis、memcache 3、基于文档存储的数据库:mongodb 2. 什么样的数据需要缓存 很少被修改或根本不改的数据 数据字典 业务场景比如:耗时较高的统计分析sql、电话账单查询sql等 缓存使用场景: 3. ehcache是什么 Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大 4. ehcache的特点 4.1 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 4.2 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 4.3 够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才

hibernate之二级缓存

我的未来我决定 提交于 2019-11-26 17:40:42
1. 为什么需要缓存 拉高程序的性能 关系型数据库:数据与数据之间存在关系(联系)的数据库 mysql/Oracle、sqlserver 非关系型数据库:数据与数据之间是不存在关系的,key-value 1、基于文件存储的数据库:ehcache 2、基于内存存储的数据库:redis、memcache 3、基于文档存储的数据库:mongodb 2. 什么样的数据需要缓存 很少被修改或根本不改的数据 数据字典 业务场景比如:耗时较高的统计分析sql、电话账单查询sql等 3. ehcache是什么 Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大 注1:本章介绍的是2.X版本,3.x的版本和2.x的版本API差异比较大 4. ehcache的特点 4.1 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 4.2 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 4.3 够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2

mybatis缓存

纵然是瞬间 提交于 2019-11-26 16:43:26
mybatis缓存 一级缓存 触发清空一级缓存的情况 二级缓存 概念:存在与内存的临时数据 使用作用:减少和数据库的交互次数,提高执行效率 使用环境:经常查询不常修改的数据,数据正确性与最终结果不大的如商品库存,银行汇率,股市的牌价就不能使用 一级缓存 在查询数据的时候会在SqlSession存入缓存,缓存中的数据是map结构数据,SqlSession消失,缓存也消失 测试: 1.调用相同的查询方法,发现返回的两个对象相等,并且sql只执行了一次 2.当清除SqlSession缓存的时候,sql执行了两次,并且的到的对象地址也是不同的 触发清空一级缓存的情况 一级缓存会在调用修改,添加,删除,commit(),close()等方法时,就会清空一级缓存 二级缓存 是SqlSessionFactory对象的缓存该对象创建的SqlSession都共享其缓存 测试 1.使用相同的factory创建SqlSession,并在使用后close(),这样可以清楚一级缓存 2.查看以上结果发现并没有缓存的效果,相同的调用下sql语句还是执行了两遍,这是因为手动开启二级缓存 开启二级缓存有三步: 1).在全局配置文件SqlMapConfig下设置Setting的cacheEnabled属性为true(本身默认值为true) 2).在实体类映射文件中添加<cache/>标签 3)

hibernate二级缓存

試著忘記壹切 提交于 2019-11-26 15:52:55
1. 为什么需要缓存 拉高程序的性能 2. 什么样的数据需要缓存 很少被修改或根本不改的数据 业务场景比如:耗时较高的统计分析sql、电话账单查询sql等 3. ehcache是什么 Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大 注1:本章介绍的是2.X版本,3.x的版本和2.x的版本API差异比较大 4. ehcache的特点 4.1 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 4.2 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 4.3 够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。 4.4 够轻量 核心程序仅仅依赖slf4j这一个包,没有之一! 4.5 好扩展 Ehcache提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持的插件多 4.6 监听器 缓存管理器监听器

MyBatis的缓存机制

拥有回忆 提交于 2019-11-26 14:24:51
概述 在实际开发中,通常对数据库查询的性能要求很高,而MyBatis提供了查询缓存来缓存数据,从而达到提供查询性能的要求 MyBatis的查询缓存分为一级缓存和二级缓存 一级缓存是SqlSession级别的缓存 二级缓存是mapper级别的缓存 二级缓存是多个SqlSession共享的。MyBatis通过缓存机制减轻数据压力,提高数据库性能。 一级缓存 MyBatis的一级缓存是SqlSession级别的缓存,在操作数据库时需要构造SQLSession对象,在对象中有一个HashMap用于存储缓存数据,不同的SQLSession之间缓存数据区域(HashMap)是互相不影响的 一级缓存的作用域是SqlSession范围的,当在同一个SQLSession中执行两次相同的sql语句时,第一次执行完毕会将数据库中查询的数据写到缓存(内存)中,第二次查询时会从缓存中获取数据,不再去底层进行数据库查询,从而提高了查询效率 需要注意的是:如果SqlSession执行了DML操作(insert、update、delete),并执行commit()操作,Mybatis则会清空SQLSession中的一级缓存,这样做的目的是未来保存缓存中存储的是最新的信息,避免出现脏读现象。 当一个SqlSession结束后该SQLSession中的一级缓存也就不存在了,Mybatis默认开启一级缓存

mybatis查询缓存机制

痴心易碎 提交于 2019-11-26 14:11:55
简介: mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能 mybatis提供一级缓存和二级缓存 一级缓存:sqlsession级别的缓存 在操作数据库时,需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据 不同的sqlsession之间的缓存区域是互相不影响的。 二级缓存:mapper级别的缓存      多个sqlsession去操作同一个mapper的sql语句,多个sqlsession可以共用二级缓存,所得到的数据会存在二级缓存区域,      二级缓存是跨sqlsession的 二级缓存相比一级缓存的范围更大(按namespace来划分),多个sqlsession可以共享一个二级缓存 为什么要用缓存? 如果缓存中有数据,就不用从数据库获取,大大提高系统性能。 一级缓存工作原理: 图解: 操作过程: 第一次发起查询sql查询用户id为1的用户,先去找缓存中是否有id为1的用户,如果没有,再去数据库查询用户信息。得到用户信息,将用户信息存储到一级缓存中。 如果sqlsession执行了commit操作(插入,更新,删除),会清空sqlsession中的一级缓存,避免脏读 第二次发起查询id为1的用户,缓存中如果找到了,直接从缓存中获取用户信息 mybatis默认支持一级缓存。 二级缓存实现原理 图解:

MyBatis的事物管理和缓存

此生再无相见时 提交于 2019-11-26 12:08:31
MyBatis的事物 事物的概念 在Java语言数据库框架中,数据库的事务管理都是非常重要的。 每个业务逻辑都是由一系列数据库访问完成的,这些访问可能修改多条数据记录,这一系列修改应该是一个整体,绝对不能只修改其中的某几条数据记录。 多个数据库原子访问应该被绑定成一个整体,这就是事物。事务是一步或几步操作组成的逻辑执行单元,这些基本操作作为一个整体执行单元,它们要么全部执行,要么全部取消执行,绝对不能仅仅执行一部分。 一个用户请求对应一个业务逻辑方法,一个逻辑方法往往具有逻辑上的原子性,此时应使用事物。 例如:一个转账操作,对应修改两个账户余额,这两个账户的修改要么同时生效,要么同时取消,同时生效是转账成功,同时取消是转账失败;但不可只修改其中一个账户,那将破坏数据库的完整性。 事物的四个特性 1.原子性:事物是应用中最小的执行单位,就如原子是自然界最小颗粒而不可以再分一样,事物是应用中不可再分的最小逻辑执行体。 2.一致性:事物的执行结果,必须使数据库从一种一致性状态,变为另一种一致性状态。当数据库只包含事物成功提交的结果时,数据库处于一致性状态。当系统运行发生中断,某个事物尚未完成而被迫中断,而该未完成的事物对数据库所做的修改已被写入数据库,此时,数据库处于不正确的状态。一致性是通过原子性来保证的。 3.隔离性:各个事物的执行互不干扰,任意一个事物的内部操作对其他并发的事物