廉頗老矣,尚能飯否

          java:從技術(shù)到管理

          常用鏈接

          統(tǒng)計

          最新評論

          Hibernate緩存配置 【轉(zhuǎn)載】

          Hibernate的緩存分為:

          • 一級緩存:在Session級別的,在Session關(guān)閉的時候,一級緩存就失效了。
          • 二級緩存:在SessionFactory級別的,它可以使用不同的緩存實現(xiàn),如EhCache、JBossCache、OsCache等。

          緩存的注釋寫法如下,加在Entity的java類上:

          • @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

          緩存的方式有四種,分別為:

          • CacheConcurrencyStrategy.NONE
          • CacheConcurrencyStrategy.READ_ONLY,只讀模式,在此模式下,如果對數(shù)據(jù)進(jìn)行更新操作,會有異常;
          • CacheConcurrencyStrategy.READ_WRITE,讀寫模式在更新緩存的時候會把緩存里面的數(shù)據(jù)換成一個鎖,其它事務(wù)如果去取相應(yīng)的緩存數(shù)據(jù),發(fā)現(xiàn)被鎖了,直接就去數(shù)據(jù)庫查詢;
          • CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不嚴(yán)格的讀寫模式則不會的緩存數(shù)據(jù)加鎖;
          • CacheConcurrencyStrategy.TRANSACTIONAL,事務(wù)模式指緩存支持事務(wù),當(dāng)事務(wù)回滾時,緩存也能回滾,只支持JTA環(huán)境。

          另外還有如下注意事項:

          1、查詢緩存需要在Query的相應(yīng)方法執(zhí)行前加上這么一句:

          query.setCacheable(true);

          在使用Hibernate時,獲得的query有setCacheable方法,可以設(shè)置使用緩存,但當(dāng)使用JPA時,javax.persistence.Query并沒有setCacheable方法,此時如果JPA的實現(xiàn)是Hibernate時,可以將其進(jìn)行如下轉(zhuǎn)化,再調(diào)用setCacheable方法(如果JPA的實現(xiàn)是其它ORMAP框架,就不知道怎么做了)。

          if (query instanceof org.hibernate.ejb.QueryImpl) {
              ((org.hibernate.ejb.QueryImpl) query).getHibernateQuery().setCacheable(
          true);
          }

          2、還有就是查詢緩存的查詢執(zhí)行后,會將查詢結(jié)果放入二級緩存中,但是放入的形式是以ID為Key,實例作為一個Value。

          3、hibernate的配置文件中需加入如下信息:

          <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
          <property name="hibernate.cache.use_second_level_cache" value="true" />
          <property name="hibernate.cache.use_query_cache" value="true" />


          柳德才
          13691193654
          18942949207
          QQ:422157370
          liudecai_zan@126.com
          湖北-武漢-江夏-廟山

          posted on 2009-04-08 15:43 liudecai_zan@126.com 閱讀(178) 評論(0)  編輯  收藏 所屬分類: 程序人生

          主站蜘蛛池模板: 游戏| 西峡县| 大方县| 即墨市| 安远县| 栾川县| 华安县| 天峨县| 潼关县| 青浦区| 营山县| 大理市| 吉木乃县| 五常市| 嵊州市| 黑龙江省| 林西县| 疏勒县| 犍为县| 龙游县| 宁陕县| 开平市| 溧阳市| 白银市| 郓城县| 岫岩| 绥中县| 北京市| 林甸县| 炉霍县| 深泽县| 龙游县| 凌云县| 宜兰市| 客服| 二手房| 方正县| 安国市| 乌拉特后旗| 万山特区| 舒城县|