第05项目电力两套技术二级缓存_第1页
第05项目电力两套技术二级缓存_第2页
第05项目电力两套技术二级缓存_第3页
第05项目电力两套技术二级缓存_第4页
第05项目电力两套技术二级缓存_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 hibernate 二级缓存北京传智播客教育 二级缓存1、理解缓存定义 缓存(Cache): 计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。缓存中的数据是数据存储源中数据的拷贝。缓存的物理介质通常是内存北京传智播客教育 二级缓存2、理解二级缓存定义Hibernate中提供了两个级别的缓存第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存。这一级别的缓存由 hibernate 管理的,一般情况下无需进行干预第二级别的缓存是 SessionF

2、actory 级别的缓存,它是属于进程范围的缓存SessionFactory 的缓存可以分为两类:内置缓存: Hibernate 自带的, 不可卸载. 通常在 Hibernate 的初始化阶段, Hibernate 会把映射元数据和预定义的 SQL 语句放到 SessionFactory 的缓存中, 映射元数据是映射文件中数据的复制, 而预定义 SQL 语句时 Hibernate 根据映射元数据推到出来的. 该内置缓存是只读的. 外置缓存(二级缓存): 一个可配置的缓存插件. 在默认情况下, SessionFactory 不会启用这个缓存插件. 外置缓存中的数据是数据库数据的复制, 外置缓存的

3、物理介质可以是内存或硬盘北京传智播客教育 二级缓存3、hibernate二级缓存的结构北京传智播客教育 二级缓存4、理解二级缓存的并发访问策略两个并发的事务同时访问持久层的缓存的相同数据时, 也有可能出现各类并发问题. 二级缓存可以设定以下 4 种类型的并发访问策略, 每一种访问策略对应一种事务隔离级别非严格读写(Nonstrict-read-write): 不保证缓存与数据库中数据的一致性. 提供 Read mited 事务隔离级别, 对于极少被修改, 而且允许脏读的数据, 可以采用这种策略读写型(Read-write): 提供 Read Commited 数据隔离级别.对于经常读但是很少被

4、修改的数据, 可以采用这种隔离类型, 因为它可以防止脏读事务型(Transactional): 仅在受管理环境下适用. 它提供了 Repeatable Read 事务隔离级别. 对于经常读但是很少被修改的数据, 可以采用这种隔离类型, 因为它可以防止脏读和不可重复读只读型(Read-Only):提供 Serializable 数据隔离级别, 对于从来不会被修改的数据, 可以采用这种访问策略(很强,但是性能低)北京传智播客教育 二级缓存5、缓存中存放的数据适合放入二级缓存中的数据:很少被修改不是很重要的数据, 允许出现偶尔的并发问题不适合放入二级缓存中的数据:经常被修改财务数据, 绝对不允许出现

5、并发问题与其他应用数据共享的数据北京传智播客教育 二级缓存6、缓存提供的供应商Hibernate 的二级缓存是进程或集群范围内的缓存, 缓存中存放的是对象的散装数据二级缓存是可配置的的插件, Hibernate 允许选用以下类型的缓存插件:EHCache: 可作为进程范围内的缓存, 存放数据的物理介质可以使内存或硬盘, 对 Hibernate 的查询缓存提供了支持OpenSymphony OSCache:可作为进程范围内的缓存, 存放数据的物理介质可以使内存或硬盘, 提供了丰富的缓存数据过期策略, 对 Hibernate 的查询缓存提供了支持SwarmCache: 可作为集群范围内的缓存, 但

6、不支持 Hibernate 的查询缓存JBossCache:可作为集群范围内的缓存, 支持 Hibernate 的查询缓存4 种缓存插件支持的并发访问策略(x 代表支持, 空白代表不支持)北京传智播客教育 二级缓存7、配置进程范围内的二级缓存(配置ehcache缓存)(在hibernate的配置文件中配置)(1) 拷贝ehcache-1.5.0.jar到当前工程的lib目录下(2) 开启二级缓存 true(3) 要指定缓存的供应商 org.hibernate.cache.EhCacheProvider(4) 指定使用二级缓存的类 * 方法一 在使用类的*.hbm.xml配置选择需要使用二级缓存

7、的持久化类, 设置它的二级缓存的并发访问策略, 元素的 cache 子元素表明 Hibernate 会缓存对象的简单属性, 但不会缓存集合属性, 若希望缓存集合属性中的元素, 必须在 元素中加入 子元素北京传智播客教育 二级缓存8、配置进程范围内的二级缓存(配置ehcache缓存) * 方法二 在hibernate.cfg.xml文件中配置(建议) (5) 配置ehcache默认的配置文件ehcache.xml(名字固定)(放在类(src)路径下)北京传智播客教育 二级缓存ehcache.xml文件9、配置进程范围内的二级缓存(配置ehcache缓存)所有配置的二级缓存的默认使用的配置北京传智

8、播客教育 二级缓存以下属性是必须的:maxElementsInMemory - 在内存中缓存的element的最大数目maxElementsOnDisk - 在磁盘上缓存的element的最大数目eternal - 设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断overflowToDisk - 设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上以下属性是可选的:timeToIdleSeconds - 当缓存在EhCache中的数据前后两次访问的时间

9、超过timeToIdleSeconds的属性取值时,这些数据便会删除.timeToLiveSeconds - 缓存element的有效生命期diskPersistent - 在VM重启的时候是否启用磁盘保存EhCache中的数据,默认是false。diskExpiryThreadIntervalSeconds - 磁盘缓存的清理线程运行间隔,默认是120秒。每隔120s,相应的线程会进行一次EhCache中数据的清理工作memoryStoreEvictionPolicy - 当内存缓存达到最大,有新的element加入的时候,移除缓存中element的策略。默认是LRU(最近最少使用),可选的

10、有LFU(最不常使用)和FIFO(先进先出) 10、 配置ehcache缓存的说明北京传智播客教育 二级缓存11、配置进程范围内的二级缓存(配置ehcache缓存):指定一个目录, 当 EHCache 把数据写到硬盘上时, 将把数据写到这个文件目录下. 默认是C:WINDOWSTemp : 设置缓存的默认数据过期策略 设定具体的命名缓存的数据过期策略每个命名缓存代表一个缓存区域,每个缓存区域有各自的数据过期策略。命名缓存机制使得用户能够在每个类以及类的每个集合的粒度上设置数据过期策略。 北京传智播客教育 二级缓存cache元素的属性 name:设置缓存的名字,它的取值为类的全限定名或类的集合的

11、名字 maxElementsInMemory :设置基于内存的缓存中可存放的对象最大数目 eternal:设置对象是否为永久的,true表示永不过期,此时将忽略timeToIdleSeconds 和 timeToLiveSeconds属性; 默认值是false timeToIdleSeconds:设置对象空闲最长时间,以秒为单位, 超过这个时间,对象过期。当对象过期时,EHCache会把它从缓存中清除。如果此值为0,表示对象可以无限期地处于空闲状态。 timeToLiveSeconds:设置对象生存最长时间,超过这个时间,对象过期。如果此值为0,表示对象可以无限期地存在于缓存中. 该属性值必须

12、大于或等于 timeToIdleSeconds 属性值 overflowToDisk:设置基于内在的缓存中的对象数目达到上限后,是否把溢出的对象写到基于硬盘的缓存中 diskPersistent 当jvm结束时是否持久化对象 true false 默认是falsediskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间12、配置进程范围内的二级缓存(配置ehcache缓存)北京传智播客教育 二级缓存13:需要引入两个jar包需要引入三个jar包在hibernate下能找到hibernate-distribution-3.5.6-Finalli

13、boptionalehcacheehcache-1.5.0.jar在srping下能找到.libconcurrentbackport-util-concurrent.jar.lib monscommons-logging.jar北京传智播客教育 二级缓存public void classSecondCache()Configuration config=new Configuration();config.configure();SessionFactory sf=config.buildSessionFactory();Session session=sf.openSession();Tra

14、nsaction tx=session.beginTransaction(); /当我第一次执行查询的时候,查询的实体放置到类级别的缓存中/查询的条件(主键 这个条件放置查询缓存中)Query query=session.createQuery(select o from ElecSystemDDL o);query.setCacheable(true);query.list(); mit();session.close();session=sf.openSession();tx=session.beginTransaction();/查询缓存中存放的是查询条件,以该条件(主键)为准,去类级别的缓存中查找实体,不查数据库query=session.createQuery(select o from ElecSystemDDL o);query.setCacheable(true);query.list(); mit();session.close();14、测试二级缓存北京传智播客教育 二级缓存15: 查询缓存对于经常使用的查询语句, 如果启用了查询缓存, 当第一次执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论