缓存

来源:互联网 发布:淘宝的全球购可信吗 编辑:程序博客网 时间:2024/04/29 02:14

1        一级缓存和二级缓存和査询缓存(面试题)(详见hibernate_3000_Hibernate_3KindsOf_Cache)

a)        什么是缓存

b)        什么是一级缓存,session级别的缓存

c)        I什么是二级缓存,SessionFactory级别的缓存,可以跨越session存在

                     i.       经常被访间

                 ii.       改动不大不会经常改动

              iii.       数重有限

d)        打开二级缓存

                     i.       hibernate.cfg.xml设定:

<property

name="cache.use_second_level_cache">true</property>

<property

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

                 ii.       @Cache注解(hibernate扩展提供)

@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

 

注:使用EhCache二级缓存需要导入ehcache-1.2.3.jarcommons-logging-1.0.4.jar

e)        load默认使用二级缓存,iterate默认使用二级缓存

f)        list默认往二级缓存加数据,但是查询的时候不使用

g)        如果要query用二级缓存,需打开查询缓存

<propertyname="cache.use_query_cache">true</property>

调用QuerysetCachable (true)方法指明使用二级缓存

例如:session.createQuery("fromCategory").setCacheable(true).list();

h)        缓存算法:(纯为了面试)

                     i.       LRU  LFU  FIFO

1.            Least Recently Used最近很少被使用

2.            Least Frequently Used (命中率高低)

3.            First In First Out按顺序替换

                 ii.       memoryStoreEvictionPolicy = "LRU" (ehcache.xml中配置)

原创粉丝点击