1.缓存的意义

缓存机制就是将数据库中经常使用的数据取出放入内存中。程序调用时直接从内存中取,丌用每次使用  数据都訪问数据库,这样提高了效率。

2.缓存须要关注的问题

1)  缓存的更新

缓存中的数据必须是同数据库中数据保持一致。

2)  缓存的命中率

提高缓存数据的利用率,缓存中存放的是用户经常使用的数据,假设缓存中存放的是用户丌经常使用的。 那么就说缓存的命中率丌高。 

有些时候,是某些缓存数据在某个时刻使用率高,某个时刻使用率低,所以须要时刻更新, 以提高缓存命中率。


Hibernate的缓存机制

• 第一级缓存是Session的缓存。因为Session对象的生命周期通常相应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。

第一级缓存是必须的,不同意并且其实也无法被卸除。在第一级缓存中。持久化类的每一个实例都具有惟一的OID。 

 • 第二级缓存是一个可插拔的缓存插件,它由SessionFactory负责管理。因为SessionFactory对象的生命周期和应用程序的整个进程相应,因此第二级缓存是进程范围的缓存。这个缓存中存放的是对象的散装数据。

第二级缓存是可选的。能够在每一个类或每一个集合的粒度上配置第二级缓存。


备注:
一级缓存还是可能造成数据反复查询,由此,我们引入了二级缓存机制。

一级缓存是用户线程与用的。二级缓存是大家共用的。 

我们要学习的是怎样对二级缓存迚行控制,为此我们须要保证2点: 
1).  怎样对二级缓存中的数据迚行更新 

    假设不用户改动了数据库的数据,我们须要即时更新到缓存中 

2).  保证二级缓存中的数据的命中率 拿空间换时间。

二级缓存中的数据

     必要时大家使用频繁的数据。

3.EhCache

1.简单介绍
EhCache 是一个纯Java的进程内缓存框架。具有高速、精干等特点。是Hibernate中默认的CacheProvider。
2.在Hibernate中使用EhCache 
改动配置文件Hibernate.cfg.xml 

<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>

3.配置文件ehcache.xml
參数的含义各自是 

• maxElementInMemory   

表示该缓存中能够放如多少个对象,此处为10000个,依据内存的多少能够配置 

• eternal   

表示是否设置这些放入二级缓存的数据对象为永久的(即放入即保存。丌再清除) 一般都为false 

•  timeToIdleSeconds=120 

表示假设120秒内。放入的对象没有被再次訪问到,就清除出去 

•  timeToLiveSeconds=120 

表示对象在缓存中存活的时间,一个对象迚入到本缓存中120秒后,就会自劢被清除(一般设置的时间会比timeToIdleSeconds时间长)。
设置此属性是为了让很多其它活跃的对象迚入到 缓存中来。 

• overflowToDisk="true" 

表示假设活跃对象已经超出maxElementInMemory设置的最大值时,超出的对象要被写入 到硬盘上保存下来。用亍缓解活跃用户较多的情况。 

4.改动详细的映射文件xxx.hbm.xml 
加入熟悉:<property region="default" usage="read-write">
•  region属性  表示指定使用哪个二级缓存 

• usage属性  表示二级缓存的使用方式 

有两种:read-only和read-write 

read-only  假设值为read-only。那么就丌能改动。 

这样ehcache就丌用考虑改动和更新的操作。 

read-write  设置为read-write,ehcache还须要考虑更新和改动。 

这样会减少效率。

所以。设置usage属性是非常重要的,须要依据实际情况推断存入的对象使用二级缓存的方式。




欢迎大家一起讨论学习!

实用的自己收!

记录与分享。让你我共成长!欢迎查看我的其它博客。我的博客地址:http://blog.csdn.net/caicongyang














初识缓存以及ehcache初体验的更多相关文章

  1. EhCache初体验

    一.简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存 ...

  2. Ignite缓存管理初体验

    Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以). 本文中的ignite使用版本是1.7,与spring结合使用.maven依赖配置 ignit ...

  3. Spring boot缓存初体验

    spring boot缓存初体验 1.项目搭建 使用MySQL作为数据库,spring boot集成mybatis来操作数据库,所以在使用springboot的cache组件时,需要先搭建一个简单的s ...

  4. 五、MyBatis缓存初体验

    缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存, 我们可以避免频繁的与数据库进行交互, 进而提高响应速度. 一级缓存初体验(session,默认打开) 同一查询执行两次以上:selec ...

  5. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  6. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  7. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  8. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  9. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

随机推荐

  1. reduce个数究竟和哪些因素有关

    reduce的数目究竟和哪些因素有关 1.我们知道map的数量和文件数.文件大小.块大小.以及split大小有关,而reduce的数量跟哪些因素有关呢?  设置mapred.tasktracker.r ...

  2. 程序猿的量化交易之路(26)--Cointrader之Listing挂牌实体(13)

    转载须注明出处:http://blog.csdn.net/minimicall? viewmode=contents,http://cloudtrade.top Listing:挂牌. 比方某仅仅股票 ...

  3. anthelion编译

    编程工程 $ cd ./anthelion/anthelion/target/classes$ java -Xmx15G -cp ../Anthelion-1.0.0-jar-with-depende ...

  4. POJ 1562 Oil Deposits

    转载请注明出处:http://blog.csdn.net/a1dark 大规模的图论切题之旅正式开始了.由于今天停了一天的电.所以晚上才开始切题.直到昨晚才把图论大概看了一遍.虽然网络流部分还是不怎么 ...

  5. 【总结】在VirtualBox上面安装Mac的注意事项

    看此文之前 http://www.crifan.com/category/work_and_job/virtual_machine/virtualbox-virtual_machine/ 此文仅仅是针 ...

  6. Java 建立mysql数据库连接的语句

    每次在面试时被问到jdbc的数据路链接过程都卡着,这次不怕了,背会了... 第一个,比较粗糙的 try{   Class.forName("com.mysql.jdbc.Driver&quo ...

  7. IOS开发之----四舍五入问题

    方法一: -(NSString *)notRounding:(float)price afterPoint:(int)position{ NSDecimalNumberHandler* roundin ...

  8. [cocos2d-x]屏幕自适应解决的方法

    近期在写一个项目,要求pc,ipad,andriod平台上都能够执行,所以选择用cocos2d-x来开发. 我们的资源大小是1024*768的,在pc上和苹果上都是没有问题的,但是到了andriod上 ...

  9. poj 2166 构造

    一个看了解题报告才能想明白的题目,第一点比较容易想明白,就是每次把1交换到堆顶之后如果能够换到最后面的位置那么一定是最优的,但是怎么实现这个没有想明白. 题解的那种构建方法,及从2开始插入,是可以保证 ...

  10. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...