ehcache + hibernate 二级缓存技术(转)

1、首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:

代码
<?xml version='1.0' encoding='UTF-8'?> <ehcache> <diskStore path="d:/temp"/> <defaultCache maxElementsInMemory="10000" <!-- 缓存最大数目--> eternal="false" <!--缓存是否持久 --> timeToIdleSeconds="300"<!--当缓存闲置n秒后销毁 --> timeToLiveSeconds="180"<!-- 当缓存存活n秒后销毁 --> overflowToDisk="true"<!-- 是否保存到磁盘,当系统当机时--> diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
2,hibernate 配置文件中的设置
代码 
  <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="connection.url"> jdbc:mysql://localhost:3306/xdoclet-eache </property> <property name="connection.username">root</property> <property name="connection.password">chenming</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.cache.use_query_cache">ture</property> <property name="cache.provider_class"> org.hibernate.cache.EhCacheProvider </property> <property name="hibernate.cache.use_query_cache">true</property> <mapping resource="com/bladwin/model/User.hbm.xml" /> </session-factory> </hibernate-configuration>

说明一下:

1. 如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,

2 。如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置
hibernate.cache.use_query_cache true 才行

3、在Hbm文件中添加<cache usage="read-only"/>

4、如果需要“查询缓存”,还需要在使用Query或Criteria()时设置其setCacheable(true);属性

你可能感兴趣的:(Hibernate,cache,MyEclipse,iterator,query,encoding)