必威体育Betway必威体育官网
当前位置:首页 > IT技术

Hibernate 二级缓存和查询缓存

时间:2019-08-10 21:43:20来源:IT技术作者:seo实验室小编阅读:65次「手机版」
 

二级缓存

一级缓存:

   1,在session上面有一个一级缓存;一级缓存的生命周期和session相同,一级缓存最大生命周期就是一个线程;在web环境下面,session的最大生命周期就是一次请求;

   2,一级缓存可以用来干嘛?

       1,只能有限的提高一点点系统性能;

       2,最重要的功能:提供给了一个临时存放持久化对象的空间;

在更多的情况下,我们要提高的性能的数据往往是不同请求,请求的相同数据;

二级缓存概念:

1,生命周期为整个应用的缓存(二级缓存是sessionfactory上的缓存,能提供整个应用中所有的session使用,可以在不同的请求之间共享缓存的数据)

2,所有的get,load方法,总是先查一级缓存,再查二级缓存,如果都没有,再去数据库里面查询。

附加:二级缓存的原理;

二级缓存其实就是个缓存.什么是缓存?其实简单理解就是一个Map;

4,二级缓存有一些性能的指标

 1、命中率(总的从二级缓存中取得的数量/总的取的数量)

 2、最大对象数量;

 3、最大空闲时间;

 4, 移除数据策略;FIFO   FILO   LRU

5,二级缓存实际上就是一个缓存,所以,hibernate并没有实现自己的二级缓存框架,而是用的开源的缓存框架。

Hibernate中二级缓存的使用:

1,常见的开源的二级缓存框架

2,Ehcache作为hibernate二级缓存

1,ehcache相关jar包;

2,拷贝ehcache.xml(ehcache的配置文件);

3,告诉hibernate,我现在用的是哪一个缓存框架;

4,hibernate中配置好二级缓存:

5,指定哪些实体对象需要二级缓存:         1,在映射文件中添加;

 

3,usage的作用:usage代表对象缓存策略;怎么使用二级缓存;

  1,usage="read-only" :放到二级缓存里面的对象是只读,不能被直接修改(性能最高)

  2,usage="read-write":允许读写(对并发支持较好)

  3,usage="nonstrict-read-write":允许读写,但是在并发事务情况下会产生脏数据

  4,usage="transactional" :允许读写,并且支持全事务(只能在APPlicationServer环境下有用)

4,ehcache的配置:

  1,maxElementsInMemory:该缓存池放在内存中最大的缓存对象个数;

  2,eternal:是否永久有效,如果设置为true,内存中对象永不过期;

  3,timeToIdleSeconds:缓存对象最大空闲时间,单位:秒;

  4,timeToLiveSeconds:缓存对象最大生存时间,单位:秒;

  5,overflowToDisk:当内存中对象超过最大值,是否临时保存到磁盘;

  6,maxElementsOnDisk:能保存到磁盘上最大对象数量;

  7,diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒

  8,memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。

   默认策略是LRU(最近最少使用),可以设置为FIFO(先进先出)或是LFU(较少使用)

 说明:

1,默认情况下,所有的对象都是缓存在ehcache的defaultCache中;

2,一定注意,dafaultCache,eternal不能设置为true

3,把一个类放在指定的二级缓存区域中(可以细粒度的管理二级缓存的性能);

 1,给一个类添加region属性(二级缓存区块的名称)

相关阅读

hibernate uniqueResult方法

数据库中根据你的查询条件只会返回唯一结果,就可以用uniqueResult这个方法!否则就用list();其返回类型为Object uniqueResult()方法通

Spring整合HIbernate和springmvc

Spring整合HIbernate和springmvc 1.导入jar包 <properties> <org.springframework.version>4.2.0.RELEASE</org.springfram

城管希 - -! 又来讲Hibernate了

HQL语句查询                // 使用HQL查询表的所有记录 Session session = HibernateUitl.getOpenSession()

7.1 Hibernate:内置生成器 -- assigned

assigned 是 Hibernate 内置的默认生成器策略,应用程序应该对持久化对象的唯一标识符赋值。 特点:可以跨数据库,人为控制主键生成,建

Hibernate状态 (merge,attachDirty,attachClean)

在Hibernate中的对象有三种状态,即:瞬时状态(Transient)、持久状态(Persistent)、脱管状态(Detached)1、瞬时状态(Transient)由new

分享到:

栏目导航

推荐阅读

热门阅读