您好,登錄后才能下訂單哦!
小編給大家分享一下如何配置Hibernate二級緩存,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Hibernate有很多值得學習的地方,這里我們主要介紹配置Hibernate二級緩存,包括介紹在Spring托管的Hibernate二級緩存等方面。
使用EhCache配置Hibernate二級緩存:
配置Hibernatee二級緩存準備:
1)把ehcache-1.2.3.jar加入到當前應用的classpath中。
2)在hibernate.cfg.xml文件中加入EhCache緩存插件的提供類。
<property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property>
3)挎貝ehcache.xml文件到類路徑(項目工程的src目錄下),這個文件在Hibernate安裝目錄的etc下。
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.qiujy.domain.cachedemo.Category" table="categories"> //配置緩存,必須緊跟在class元素后面對緩存中的Category對象采用讀寫型的并發訪問策略 <cache usage="read-write"/> <id name="id" type="java.lang.Long"> <column name="id" /> <generator class="native" /> </id> <!-- 配置版本號,必須緊跟在id元素后面 --> <version name="version" column="version" type="java.lang.Long" /> <property name="name" type="java.lang.String"> <column name="name" length="32" not-null="true"/> </property> <property name="description" type="java.lang.String"> <column name="description" length="255"/> </property> <set name="products" table="products" cascade="all" inverse="true"> <cache usage="read-write"/> <key column="categoryId" not-null="true"/> <one-to-many class="org.qiujy.domain.cachedemo.Product"/> </set> </class> </hibernate-mapping>
Product.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.qiujy.domain.cachedemo.Product" table="products"> <cache usage="read-write"/> <id name="id" type="java.lang.Long"> <column name="id" /> <generator class="native" /> </id> <!-- 配置版本號,必須緊跟在id元素后面 --> <version name="version" column="version" type="java.lang.Long" /> <property name="name" type="java.lang.String"> <column name="name" length="32" not-null="true"/> </property> <property name="description" type="java.lang.String"> <column name="description" length="255"/> </property> <property name="unitCost" type="java.lang.Double"> <column name="unitCost" /> </property> <property name="pubTime" type="java.util.Date"> <column name="pubTime" not-null="true" /> </property> <many-to-one name="category" column="categoryId" class="org.qiujy.domain.cachedemo.Category" cascade="save-update" not-null="true"> </many-to-one> </class> </hibernate-mapping>
編輯ehcache.xml文件:
<ehcache> <diskStore path="c:\\ehcache\"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" /> <!-- 設置Category類的緩存的數據過期策略 --> <cache name="org.qiujy.domain.cachedemo.Category" maxElementsInMemory="100" eternal="true" timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="false" /> <!-- 設置Category類的products集合的緩存的數據過期策略 --> <cache name="org.qiujy.domain.cachedemo.Category.products" maxElementsInMemory="500" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" /> <cache name="org.qiujy.domain.cachedemo.Product" maxElementsInMemory="500" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" /> </ehcache>
在Spring托管的Hibernate二級緩存
1.在spring的配置文件中,hibernate部分加入 xml 代碼 org.hibernate.cache.EhCacheProvider true
2.為HBM表設置cache策略 xml 代碼
3.在DAO中,調用find方法查詢之前,設置使用緩存 Java代碼 getHibernateTemplate().setCacheQueries(true);
補充: 如果不設置“查詢緩存”,那么Hibernate只會緩存使用load()方法獲得的單個持久化對象,如果想緩存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法獲得的數據結果集的話,就需要設置 hibernate.cache.use_query_cache true 才行。
以上是“如何配置Hibernate二級緩存”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。