理解hibernate高速二级缓存区域

wangjianme 10年前
     <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">Hibernate</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Couriernew';">在不同的高速缓存区域(</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">cache region</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">)保存不同的类</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">/</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">集合。</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <!--?xml:namespace prefix = o /-->      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">区域即是一个具有名称的高速缓存块,你可以给每一个高速缓存块设置不同的缓存策略。如果没有设置任何的缓存区域,</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">则所有被缓存的对象,都将使用默认的缓存策略。即:</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US"><defaultCache.../>      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">对于类而言,区域的名称是类名。如</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">:cn.itcast.domain.Person(</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">一般情况后面会跟一个</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">.data)      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">对于集合而言,区域的名称是类名加属性名。如</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">cn.itcast.domain.Person.cars(</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">一般情况,后面会跟一个</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">.data)      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">  hibernate</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">的配置属性:</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">hibernate.cache.region_prefix</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">可以给每一个区域配置一个前缀的名称。但这种情况一般发生在一个项目中</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US"> </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">有多个</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">SessionFactory</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">的情况。如果一个项目有多个</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">SessionFactory</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">则此配置也是必须的。</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">以下是示例:</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">ehcache</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">的具名缓存区域配置示例:</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    </span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;mso-ansi-language:FR;" lang="FR"><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;mso-ansi-language:FR;" lang="FR">         </span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">xsi:noNamespaceSchemaLocation="ehcache.xsd"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">         updateCheck="true" monitoring="autodetect"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">         dynamicConfig="true">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    <diskStore path="d:/a"/>     //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">指定文件保存路径</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    <defaultCache     //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">配置默认缓存区域,这是必须配置项。如果没有给某个类设置缓存区域,它将使用默认缓存区域</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        maxElementsInMemory="100"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        eternal="false"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        timeToIdleSeconds="120"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        timeToLiveSeconds="300"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        overflowToDisk="true"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        />      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    <cache name="<b><span style="color:red;">cn.itcast.domain.Person</span></b>"  //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">指定</span><span style="font-family:'Courier New';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">Person</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">类的缓存区域,所有</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">Person</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">类,都会保存在此区域</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">       maxElementsInMemory="2"           //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">故意指定内存中放很少的数据,以观察生成的文件大小</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        eternal="false"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        timeToIdleSeconds="120"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        timeToLiveSeconds="300"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        overflowToDisk="true"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        diskPersistent="true"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        diskExpiryThreadIntervalSeconds="120"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        maxElementsOnDisk="100"      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        >      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">    </cache>      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US"></ehcache>      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">   </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">测试代码:一次生成多个</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">Person</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">实例,看看生成的文件大小:</span><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">        Session s1 = HibernateUtils.openSession();         <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">       Person p1 = (Person) s1.get(Person.class,"11");      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">       Person p2 = (Person) s1.get(Person.class,"402880e      <!--?xml:namespace prefix = st1 /-->      <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6346" unitname="F">       6346f      </st1:chmetcnv>5ffe      <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1346" unitname="F">       01346f      </st1:chmetcnv>6000b50000");      <o:p></o:p></span></p>    <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-family:'Couriernew';font-size:10pt;mso-font-kerning:0pt;" lang="EN-US">       Person p3 = (Person) s1.get(Person.class,"402880e6347311fa01347311fb      <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="7" unitname="C">       7c      </st1:chmetcnv>0000");      <o:p></o:p></span></p>    <span style="font-family:'Courier New';font-size:10pt;mso-ansi-language:EN-US;mso-fareast-font-family:宋体;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;" lang="EN-US">       s1.close();<br /> <!--[if !supportLineBreakNewLine]--><h4><span lang="EN-US">1</span><span style="font-family:黑体;mso-font-kerning:0pt;mso-ascii-font-family:Arial;">、理解高速<span style="color:red;">查询</span>缓存区域</span><span lang="EN-US">       <o:p></o:p></span></h4> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">当某个查询第一次执行时,它的结果被高速缓存在高速缓存区域--注意,这个区域不同于你可能已经配置的任何其他实例或</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">集合高速缓存区域。这个区域的名称默认为</span><span style="font-size:10pt;" lang="EN-US">:org.hibernate.cache.StandardQueryCache</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">。</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">可以通过</span><span style="font-size:10pt;" lang="EN-US">setCacheRegion(...)</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">方法,给一个特定的查询改变高速缓存区域。</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">         hql = "from Person where name='JackB'";       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">       list = s.createQuery(hql)       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">              .setCacheable(true)       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">              .setCacheRegion("itcast")  //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">改变默认缓存查询区域</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">              .list();       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">    </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">或是显示的设置一个查询缓存区域,以观察它的保存情况:</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">     <cache name="org.hibernate.cache.StandardQueryCache"   //</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">必须叫这个名称</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">       maxElementsInMemory="2"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        eternal="false"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        timeToIdleSeconds="120"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        timeToLiveSeconds="300"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        overflowToDisk="true"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        diskPersistent="true"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        diskExpiryThreadIntervalSeconds="120"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        maxElementsOnDisk="100"       <o:p></o:p></span></p> <p style="text-align:left;mso-layout-grid-align:none;" class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">        /><br /> <br /> </span></p><h4><span lang="EN-US">2</span><span style="font-family:黑体;mso-font-kerning:0pt;mso-ascii-font-family:Arial;">、时间戳高速缓存区域</span><span lang="EN-US">       <o:p></o:p></span></h4> <p class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">     </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">如果查询结果高速缓存被启用,另一个始终需要的高速缓存区域也出现了:</span><span style="font-size:10pt;" lang="EN-US">org.hibernate.cache.UpdateTimestampsCache</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">。</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p class="MsoNormal"><span style="font-size:10pt;" lang="EN-US">      </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">这是</span><span style="font-size:10pt;" lang="EN-US">Hibernate</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">内部使用的一个高速缓存区域。</span><span style="font-size:10pt;" lang="EN-US">Hibernate</span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">用时间戳来决定被高速缓存的结果集是否已经失效。<br /> </span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <br /> <h3><span style="font-family:宋体;mso-font-kerning:0pt;mso-ascii-font-family:'Times New Roman';mso-hansi-font-family:'Times Newroman';">使用二级缓存的项目建议</span><span lang="EN-US">       <o:p></o:p></span></h3> <p class="MsoNormal" align="left"><span style="font-size:10pt;" lang="EN-US">    </span><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Courier New';mso-hansi-font-family:'Couriernew';mso-bidi-font-family:'Courier New';">并非所有的类都可以受益于高速二级缓存,因为,能够禁用高速二级缓存也很重要。重申一下,高速缓存通常只对于主要用来读取的</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p class="MsoNormal" align="left"><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">类有用。如果你有更新比读取更经常的数据,就不要启用二级高速缓存,即使所有其他的高速缓存条件都符合!</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <p style="text-indent:21pt;" class="MsoNormal"><span style="font-family:宋体;font-size:10pt;mso-font-kerning:0pt;mso-ascii-font-family:'Couriernew';mso-hansi-font-family:'Courier New';mso-bidi-font-family:'Couriernew';">更新期间,维护高速缓存的代价可能远远超出更快读取的性能受益。</span><span style="font-size:10pt;" lang="EN-US">       <o:p></o:p></span></p> <br /> <br /> <br />     <o:p></o:p></span>    <p></p> <!--[endif]-->