<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    假設類A為持久化對象,對應表為tableA,這里沒有考慮A和其他表關聯的情況。

    在spring下配置使用二級緩存:

    <property name="hibernateProperties">
    <props>
    ........
    <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
    <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
    </props>
    </property>

    其中${hibernate.cache.provider_class}為net.sf.ehcache.hibernate.EhCacheProvider,${hibernate.cache.use_query_cache}屬性值為true(對經常使用的List查詢方式,只有在使用查詢緩存時,才會從緩存中通過id去get緩存的值;查詢緩存一般緩存查詢語句和查詢結果的id)

    A的持久化映射文件中加上cache元素:usage屬性的取值根據自己的情況自己指定相應的值

    <cache usage="read-write"/>

    配置spring的HibernateTemplate對查詢語句和結果緩存(cacheQueries值為true):

    <bean id="hibernateTemplate"
            <property name="sessionFactory"><ref bean="sessionFactory"/></property>
        <property name="cacheQueries" value="${hibernate.cache.use_query_cache}"></property>
    </bean>
    開發的spring dao(集成HibernateDaoSupport)應該配置實用這個hibernateTemplate:

    <bean id="myDao" of HibernateDaoSupport">
    <property name="hibernateTemplate" ref="hibernateTemplate" />
    <property name="jdbcTemplate" ref="jdbcTemplate" />
    </bean>

    在src下新建ehcache.xml文件,文件內容如下:

    <ehcache>
    <diskStore path="java.io.tmpdir"/>

    <!--
            eternal:元素是否永久的;
            MemoryStoreEvictionPolicy:default is LRU
        -->
    <defaultCache         maxElementsInMemory="10000"
                eternal="false"            timeToIdleSeconds="120"            timeToLiveSeconds="120"
                overflowToDisk="true"            diskPersistent="false"           diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU"/>

    <cache name="cn.hnisi.persistence.mmedia.Dmtjbxx"
                   maxElementsInMemory="500"               eternal="false"
                   timeToIdleSeconds="2400"      timeToLiveSeconds="3600"
                   overflowToDisk="false"/>

    <cache name="org.hibernate.cache.StandardQueryCache"
            maxElementsInMemory="50" eternal="false" timeToIdleSeconds="600"
            timeToLiveSeconds="1200" overflowToDisk="false"/>

    <cache name="org.hibernate.cache.UpdateTimestampsCache"
            maxElementsInMemory="500" eternal="true" overflowToDisk="false"/>

    </ehcache>
    然后你可以使用HQL查詢對象了,比如"from A where name=?";

    跟蹤查詢的sql日志就可以看出第一次是查詢數據庫,第二次是從緩存中get(見Hibernate ReadWriteCache類的get方法)

    問題:什么樣的數據適合存放到第二級緩存中?

    1 很少被修改的數據
    2 不是很重要的數據,允許出現偶爾并發的數據
    3 不會被并發訪問的數據
    4 參考數據,指的是供應用參考的常量數據,它的實例數目有限,它的實例會被許多其他類的實例引用,實例極少或者從來不會被修改。


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/selley/archive/2008/03/13/2177479.aspx

    posted on 2012-05-13 02:07 abin 閱讀(1935) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 亚洲丁香婷婷综合久久| 亚洲AV无码日韩AV无码导航| 一本色道久久88—综合亚洲精品 | 成熟女人特级毛片www免费| 亚洲精品资源在线| 久久精品国产免费观看| 亚洲六月丁香六月婷婷色伊人| 5g影院5g天天爽永久免费影院| 亚洲美女自拍视频| 无码视频免费一区二三区| 亚洲国产精品18久久久久久| 性色av无码免费一区二区三区| 亚洲精品成a人在线观看☆| 四虎www免费人成| 国产成人综合亚洲绿色| 亚洲精品无码日韩国产不卡?V| 中文字幕成人免费高清在线视频 | 成人妇女免费播放久久久| 亚洲AV无码码潮喷在线观看| 99热这里有免费国产精品| 亚洲精品**中文毛片| 成人毛片免费播放| 日本高清不卡中文字幕免费| 国产AV无码专区亚洲AV手机麻豆| 野花香高清视频在线观看免费| 久久亚洲私人国产精品| a级毛片无码免费真人| 老司机免费午夜精品视频| 人人狠狠综合久久亚洲婷婷| 最近免费中文字幕大全免费版视频| 亚洲专区一路线二| 一级毛片直播亚洲| 免费国产叼嘿视频大全网站| 亚洲最大在线视频| 免费一级大黄特色大片| 亚洲一区二区在线免费观看| 亚洲中文字幕久久精品无码VA| 亚洲人成网站18禁止一区| 99久久综合精品免费| 美女被艹免费视频| 97亚洲熟妇自偷自拍另类图片|