Hibernate 性能优化

Session: 一级缓存

sessionFactory: 二级缓存

查询缓存:  三级缓存

 

一级缓存缓存实体对象

 

Iterator 和 list的区别

       Iterator刚开始取主键,任何时候用到才取出来,所以Iterator利用缓存,不会发出查询实体的sql(from)

       List不会利用缓存,每次用到都会发出sql

 

Session消亡的时候,缓存消亡

 

查询缓存Query.setCacheable(true).list()

 

EhCache 配置文件hibernate-distribution-3.3.2.GA\project\etc\ehcache.xml

              <defaultCache

       maxElementsInMemory="10000" //最多多少个对象

       eternal="false"      //内存对象的永久性

       timeToIdleSeconds="120" //期限(对象不活动的期限)

       timeToLiveSeconds="120" //生存期

       overflowToDisk="true" />  // 缓存满时,放到硬盘<diskStorepath="java.io.tmpdir"/>

EhCache.jar

              hibernate-distribution-3.3.2.GA\lib\optional\ehcache

 

XML:<property name=” hibernate.cache.use_second_level_cache”>true </property>

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

 

Annotation: 在class设置@Cache(usage= CacheConcurrencyStrategy.READ_WRITE )

 

缓存算法

l        最佳(optimal)置换算法: 选择那些永不使用的,或者是在最长时间内不再被访问的页面置换出去.即要确定哪一个页面是未来最长时间内不再被访问

l        先进先出(FIFO): 利用队列,先进先出

l        最近最久未使用置换算法LRU (Least Recently Used): 系统在每个页面设置一个访问字段,用以记录这个页面自上次被访问以来所经历的时间T,重复访问时重新设为0,选择T最大的页面淘汰。利用栈实现,栈底的T最大.

l        最近未用置换NUR(Not UsedRecently): 为每个页面置一个访问位,将内存中的所有页面都通过链接指针链成一个循环队列。当某页被访问的时,若为‘1’,暂不换出此页,置为‘0’。如果是‘0’则淘汰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值