hibernate的缓存机制

Hibernate 分为一级缓存、二级缓存、查询缓存(三级缓存) 一级缓存存在于Session中,只能在同一个session中使用 二级缓存存在于SessionFactory中,可以跨Session使用,load()、iterate()默认使用二级缓存,list()默认往二级缓存加载数据,但在查询的时候不使用二级缓存,因为每次的查询条件很难保持一致,所以没法使用二级缓存 二级缓存使用范围(经常被访问、数量有限、不会被经常改动) 打开Hibernate的二级缓存,需在配置文件中添加 <property name="cache.user_second_level_cache">true</property><property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> (此处以EhCacheProvider举例),还需要添加EhCache的一个配置文件,此配置文件存在于hibernate-distribution-3.3.2.GA\project\etc\ehcache.xml配置文件OK后,需在要使用二级缓存的类上加注解 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 注释:READ_WRITER为可读可写,常用 三、查询缓存 1.查询缓存依赖于二级缓存,必须首先打开二级缓存,在二级缓存下面加 <property name="cache.use_query_cache">true</property> 2.在使用时,调用Query的setCachable(true)方法指明使用二级缓存 eg:session.createQuery("from Xxx").setCachable(true).list(); 缓存算法(内存指定的对象数量满了后,来了新对象之后替换哪个对象) LRU(Least Recently Used)最近很少被使用的 LFU(least Frequently Used)被使用次数最少的 FIFO(First In First Out)先进先出 memoryStoreEvictionPolicy="LRU"(ehcahe配置文件) 对于缓存算法只要知道有这么一回事情就好。

你可能感兴趣的:(Hibernate,xml,算法,cache)