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

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

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

    posts - 9, comments - 4, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    . 在Hibernate配置文件中設(shè)置:
    ????
    <!--?Hibernate?SessionFactory?-->
    ????
    <bean?id="sessionFactory"?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ????????
    <property?name="dataSource"?ref="dataSource"/>
    ????????
    <property?name="mappingResources">
    ????????
    <list>
    ????????????
    <value>com/ouou/model/Videos.hbm.xml</value>???
    ?????????
    </list>
    ?????????
    </property>
    ????????
    <property?name="hibernateProperties">
    ????????????
    <props>
    ????????????????
    <prop?key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    ????????????????
    <prop?key="hibernate.current_session_context_class">thread</prop>
    ????????????????
    <prop?key="hibernate.cglib.use_reflection_optimizer">false</prop>
    ????????????????
    <prop?key="hibernate.query.substitutions">true?'Y',?false?'N'</prop>
    ????????????????
    <!--add?ehcache-->
    ????????????????
    <prop?key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
    ????????????????
    <prop?key="hibernate.cache.use_query_cache">false</prop><!--?是否使用查詢緩存?-->
    ????????????????
    <!--
    ????????????????
    <prop?key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>
    ????????????????
    <prop?key="hibernate.show_sql">true</prop>
    ????????????????
    -->
    ????????????????
    <!--<prop?key="hibernate.transaction.auto_close_session">true</prop>-->
    ????????????????
    <prop?key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
    ????????????????
    <!--?Create/update?the?database?tables?automatically?when?the?JVM?starts?up
    ?????????????????
    <prop?key="hibernate.hbm2ddl.auto">update</prop>?-->
    ????????????????
    <!--?Turn?batching?off?for?better?error?messages?under?PostgreSQL?-->
    ????????????????
    <prop?key="hibernate.jdbc.batch_size">25</prop>
    ????????????????
    <!--
    ????????????????
    <prop?key="hibernate.connection.pool_size">10</prop>
    ????????????????
    -->
    ????????????
    </props>
    ????????
    </property>
    ????
    </bean>


    ??? 如果不設(shè)置“查詢緩存”,那么hibernate只會(huì)緩存使用load()方法獲得的單個(gè)持久化對(duì)象,如果想緩存使用findall()、 list()、Iterator()、createCriteria()、createQuery()等方法獲得的數(shù)據(jù)結(jié)果集的話,就需要設(shè)置hibernate.cache.use_query_cache true 才行

    2.首先設(shè)置EhCache,建立配置文件ehcache.xml,默認(rèn)的位置在class-path,可以放到你的src目錄下:

    ?<ehcache>

    ????
    <!--?Sets?the?path?to?the?directory?where?cache?.data?files?are?created.

    ?????If?the?path?is?a?Java?System?Property?it?is?replaced?by
    ?????its?value?in?the?running?VM.
    ?????The?following?properties?are?translated:
    ?????user.home?
    -?User's?home?directory
    ?????user.dir?-?User's?current?working?directory
    ?????java.io.tmpdir?-?Default?temp?file?path?-->
    ?????
    <!--<diskStore?path="java.io.tmpdir"/>-->
    ?????
    <diskStore?path="/data/ehcache"/>

    ????
    <!--Default?Cache?configuration.?These?will?applied?to?caches?programmatically?created?through
    ????????the?CacheManager.

    ????????The?following?attributes?are?required:

    ????????maxElementsInMemory????????????
    -?Sets?the?maximum?number?of?objects?that?will?be?created?in?memory
    ????????eternal?????????????????????????????????????
    -?Sets?whether?elements?are?eternal.?If?eternal,??timeouts?are?
    ?????????????????????????????????????????? ? ? ? ? ? ?????? ignored?and?the?element?is?never?expired.
    ????????overflowToDisk??????????????????????
    -?Sets?whether?elements?can?overflow?to?disk?when?the?in-memory?cache
    ????????????????????????????????????????????????????????has?reached?the?maxInMemory?limit.

    ????????The?following?attributes?are?optional:
    ????????timeToIdleSeconds???????????
    -?Sets?the?time?to?idle?for?an?element?before?it?expires.
    ??????????????????????????????????????????????????????? i.e.?The?maximum?amount?of?time?between?accesses?before?an
    ???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? element?expires?Is?only?used?
    if?the?element?is?not?eternal.
    ????????????????????????????????????????????????????????Optional?attribute.?A?value?of?
    0?means?that?an?Element?can?idle
    ??????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
    for?infinity.The?default?value?is?0.
    ????????timeToLiveSeconds?????????????
    -?Sets?the?time?to?live?for?an?element?before?it?expires.
    ???????????????????????????????????????????????????? ? ? i.e.?The?maximum?time?between?creation?time?and?when?an?element?
    ?????????????????????????????????????????????????????????expires.??Is?only?used?
    if?the?element?is?not?eternal.
    ?????????????????????????????????????????????????????????Optional?attribute.?A?value?of?
    0?means?that?and?Element?can?live
    ???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
    for?infinity.
    ????????????????????????????????????????????????????????The?
    default?value?is?0.
    ????????diskPersistent???????????????????????????
    -?Whether?the?disk?store?persists?between?restarts?of?the?Virtual
    ???????????????????????????????????????????????????????????? Machine.
    ?????????????????????????????????????????????????????????The?
    default?value?is?false.
    ????????diskExpiryThreadIntervalSeconds???
    -?The?number?of?seconds?between?runs?of?the?disk?expiry?thread.?
    ?????????????????????????????????????????????????????????The?
    default?value??is?120?seconds.
    ????????
    -->

    ????
    <defaultCache
    ????????maxElementsInMemory
    ="10000"
    ????????eternal
    ="false"
    ????????overflowToDisk
    ="true"
    ????????timeToIdleSeconds
    ="120"
    ????????timeToLiveSeconds
    ="120"
    ????????diskPersistent
    ="false"
    ????????diskExpiryThreadIntervalSeconds
    ="120"/>
    ????
    <cache?name="org.hibernate.cache.UpdateTimestampsCache"?maxElementsInMemory="5000"?
    ?????eternal
    ="true"?overflowToDisk="true"/>
    ????
    <cache?name="org.hibernate.cache.StandardQueryCache"?maxElementsInMemory="5"?eternal="false"
    ????timeToLiveSeconds
    ="120"?overflowToDisk="true"/>
    ????
    <cache?name="userCache"?maxElementsInMemory="100000"?eternal="false"?timeToIdleSeconds=
    ??????? "
    600" ?? timeToLiveSeconds="600"?overflowToDisk="false"?diskPersistent="false"/>
    ????
    <cache?name="com.ouou.webapp.util.OuouMethodIntecepter"?maxElementsInMemory="100000"?
    ????eternal
    ="false"?timeToIdleSeconds="600"?timeToLiveSeconds="600"?overflowToDisk="false"
    ????diskPersistent
    ="false"/>
    ????
    <cache?name="bbcode"?maxElementsInMemory="100000"?eternal="false"?timeToIdleSeconds="600"
    ????timeToLiveSeconds
    ="600"?
    ????overflowToDisk
    ="false"?diskPersistent="false"/>
    ????
    <cache?name="com.ouou.model.Videos"?maxElementsInMemory="10000"??eternal="false"?
    ????overflowToDisk
    ="false"?timeToIdleSeconds="120"?timeToLiveSeconds="120"?diskPersistent="false"/>
    ????
    <cache?name="com.ouou.model.Tags"?maxElementsInMemory="10000"??eternal="false"
    ????overflowToDisk
    ="false"?timeToIdleSeconds="120"?timeToLiveSeconds="120"?diskPersistent="false"/>
    </ehcache>


    以com.ouou.model.Videos為例子
    在Videos.hbm.xml中配置:
    <class name="Videos" table="TEST" lazy="false">
    ? <cache usage="read-write" region="ehcache.xml中的name的屬性值"/>注意:這一句需要緊跟在class標(biāo)簽下面,其他位置無(wú)效。
    hbm文件查找cache方法名的策略:如果不指定hbm文件中的region="ehcache.xml中的name的屬性值",則使用name名為com.ouou.model.Videos的cache,
    如果不存在與類名匹配的cache名稱,則用defaultCache。
    如果Videos包含set集合,則需要另行指定其cache
    例如Videos包含Tags集合,則需要
    添加如下配置到ehcache.xml中
    <cache name="com.ouou.model.Tags"
    ??????? maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120"
    ??????? timeToLiveSeconds="120" overflowToDisk="false" />
    另,針對(duì)查詢緩存的配置如下:
    <cache name="org.hibernate.cache.UpdateTimestampsCache"
    ??????? maxElementsInMemory="5000"
    ??????? eternal="true"
    ??????? overflowToDisk="true"/>
    <cache name="org.hibernate.cache.StandardQueryCache"
    ??????? maxElementsInMemory="10000"
    ??????? eternal="false"
    ??????? timeToLiveSeconds="120"
    ??????? overflowToDisk="true"/>

    3、 選擇緩存策略依據(jù):

    <cache? usage="transactional|read-write|nonstrict-read-write|read-only" (1)/>
    ehcache不支持transactional,其他三種可以支持。
    read-only:無(wú)需修改, 那么就可以對(duì)其進(jìn)行只讀 緩存,注意,在此策略下,如果直接修改數(shù)據(jù)庫(kù),即使能夠看到前臺(tái)顯示效果,
    但是將對(duì)象修改至cache中會(huì)報(bào)error,cache不會(huì)發(fā)生作用。另:刪除記錄會(huì)報(bào)錯(cuò),因?yàn)椴荒茉趓ead-only模式的對(duì)象從cache中刪除。
    read-write:需要更新數(shù)據(jù),那么使用讀/寫(xiě)緩存 比較合適,前提:數(shù)據(jù)庫(kù)不可以為serializable transaction isolation level
    (序列化事務(wù)隔離級(jí)別)
    nonstrict-read-write:只偶爾需要更新數(shù)據(jù)(也就是說(shuō),兩個(gè)事務(wù)同時(shí)更新同一記錄的情況很不常見(jiàn)),也不需要十分嚴(yán)格的事務(wù)隔離,
    那么比較適合使用非嚴(yán)格讀/寫(xiě)緩存策略。

    4、 調(diào)試時(shí)候使用log4j的log4j.logger.org.hibernate.cache=debug,更方便看到ehcache的操作過(guò)程,主要用于調(diào)試過(guò)程,實(shí)際應(yīng)用發(fā)布時(shí)候,請(qǐng)注釋掉,以免影響性能。

    5、 使用ehcache,打印sql語(yǔ)句是正常的,因?yàn)閝uery cache設(shè)置為true將會(huì)創(chuàng)建兩個(gè)緩存區(qū)域:一個(gè)用于保存查詢結(jié)果集 (
    org.hibernate.cache.StandardQueryCache);另一個(gè)則用于保存最近查詢的一系列表的時(shí)間戳(org.hibernate.cache.UpdateTimestampsCache)。
    請(qǐng)注意:在查詢緩存中,它并不緩存結(jié)果集中所包含的實(shí)體的確切狀態(tài);它只緩存這些實(shí)體的標(biāo)識(shí)符屬性的值、以及各值類型的結(jié)果。
    需要將打印sql語(yǔ)句與最近的cache內(nèi)容相比較,將不同之處修改到cache中,所以查詢緩存通常會(huì)和二級(jí)緩存一起使用。


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产av无码精品| 亚洲一级特黄无码片| 免费看大美女大黄大色| 亚洲精品无码久久久| 亚洲欧洲日产韩国在线| 一区二区三区免费电影| 成人看的午夜免费毛片| 亚洲成色在线影院| 人人爽人人爽人人片A免费 | 精品久久久久国产免费| 精品国产亚洲男女在线线电影| 亚洲一区无码中文字幕乱码| 国产一二三四区乱码免费| 美女被免费视频网站a国产| 亚洲av无码无线在线观看| 最近免费视频中文字幕大全| 亚洲色大成网站WWW久久九九| 苍井空亚洲精品AA片在线播放 | 你懂的在线免费观看| 成人免费无码精品国产电影| 91久久亚洲国产成人精品性色| xvideos永久免费入口| 亚洲大尺度无码无码专区| 国产A∨免费精品视频| gogo全球高清大胆亚洲| 中文字幕乱码亚洲无线三区| 99爱在线观看免费完整版| 亚洲国产精品久久久天堂| 久久久久久精品成人免费图片| 亚洲Av无码精品色午夜| a级毛片免费完整视频| 亚洲无成人网77777| 四虎影院永久免费观看| 亚洲精品人成网线在线播放va| 好先生在线观看免费播放 | 国产亚洲综合久久| 日本黄页网站免费| 人妻免费一区二区三区最新| 亚洲成AV人在线播放无码| 久久久久久99av无码免费网站 | 夜夜春亚洲嫩草影院|