Ehcacheをhibernate.cfg.xmlに、ehcache.xmlをehcache.xmlに、第2レベルのキャッシュを設定しました。マッピングファイルのcache-usageプロパティを設定します。チェックデータは、そのないloaded.Its再度query.Iコード第2レベルのキャッシュが設定されていて、データが第2レベルのキャッシュからロードされていません
<hibernate-configuration>
<session-factory>
<property name="connection.username">pension2</property>
<property name="connection.password">pension2</property>
<property name="connection.url">jdbc:oracle:thin:@191.161.0.25:1521:pension</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="myeclipse.connection.profile">pension</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.generate_statistics">true</property>
<property name="hibernate.cache.region.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider</property>
<property name="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml </property>
<mapping resource="com/aims/mapping/Teacher.hbm.xml" />
<mapping resource="com/aims/mapping/Student.hbm.xml" />
<mapping resource="com/aims/mapping/Student_marks_detl.hbm.xml" />
<mapping resource="com/aims/mapping/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
ehcache.xml
01述べ実行hibenrate statices.Butを使用してキャッシュまたはデータベースからロードされます<ehcache> <diskStore path="java.io.tmpdir"/> <cache name="com.aims.beans.Teacher" maxElementsInMemory="300" eternal="false" overflowToDisk="false"/> </ehcache>
Mapping.xml
<hibernate-mapping>
<class name="com.aims.beans.Teacher" table="teacher">
<cache usage="read-write" />
<id name="tno" column="tno" type="java.lang.Integer" >
<generator class="assigned" />
</id>
<property name="tname" type="java.lang.String" column="tname"/>
</class>
</hibernate-mapping>
私はからCreateQueryを使用して、私のjsp.So、Iamの中で教師のリストをロードしようとsetCacheableは本当です。
long oldHitCount = HibernateUtil.getHitCount();
long oldMissCount = HibernateUtil.getMissCount();
log.info( "oldHitCount" + oldHitCount + "oldMissCount" + oldMissCount); クエリq = session.createQuery( "教師から"); q.setCacheable(true);
list = q.list(); long newHitCount = HibernateUtil.getHitCount();
long newMissCount = HibernateUtil.getMissCount();
HibernateUtil.getHitCount()/ HibernateUtil.getMissCount()コード
public static long getHitCount() {
long hitcount = 0;
hitcount = sessionFactory.getStatistics()
.getSecondLevelCacheStatistics("com.aims.beans.Teacher")
.getHitCount();
return hitcount;
}
public static long getMissCount() {
long miscount = 0;
miscount = sessionFactory.getStatistics()
.getSecondLevelCacheStatistics("com.aims.beans.Teacher")
.getMissCount();
return miscount;
}
しかし、すべての時間がcreateQuery.I構成され、そこcache.Is間違いから返されていないその理由はすべてのものを実行します2番目のレベルのキャッシュを設定してください。私を助けてください>?