⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 performance.html

📁 图象处理
💻 HTML
📖 第 1 页 / 共 3 页
字号:
    &lt;/subclass&gt;&lt;/class&gt;</pre><p>            &#39318;&#20808;&#65292;<tt class="literal">Cat</tt>&#27704;&#36828;&#19981;&#33021;&#34987;&#24378;&#21046;&#36716;&#25442;&#20026;<tt class="literal">DomesticCat</tt>,&#21363;&#20351;&#23454;&#38469;&#19978;&#35813;&#23454;&#20363;&#23601;&#26159;&#19968;&#20010;<tt class="literal">DomesticCat</tt>&#23454;&#20363;&#12290;        </p><pre class="programlisting">Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a proxy (does not hit the db)if ( cat.isDomesticCat() ) {                  // hit the db to initialize the proxy    DomesticCat dc = (DomesticCat) cat;       // Error!    ....}</pre><p>            &#20854;&#27425;&#65292;&#20195;&#29702;&#30340;<tt class="literal">==</tt>&#21487;&#33021;&#19981;&#20877;&#25104;&#31435;&#12290;        </p><pre class="programlisting">Cat cat = (Cat) session.load(Cat.class, id);            // instantiate a Cat proxyDomesticCat dc =     (DomesticCat) session.load(DomesticCat.class, id);  // required new DomesticCat proxy!System.out.println(cat==dc);                            // false</pre><p>            &#34429;&#28982;&#22914;&#27492;&#65292;&#36825;&#31181;&#24773;&#20917;&#24182;&#19981;&#20687;&#30475;&#19978;&#21435;&#24471;&#37027;&#20040;&#31967;&#12290;&#34429;&#28982;&#25105;&#20204;&#29616;&#22312;&#26377;&#20004;&#20010;&#19981;&#21516;&#30340;&#24341;&#29992;&#26469;&#25351;&#21521;&#19981;&#21516;&#30340;&#20195;&#29702;&#23545;&#35937;&#65292;&#23454;&#38469;&#19978;&#24213;&#23618;&#30340;&#23454;&#20363;&#24212;&#35813;&#26159;&#21516;&#19968;&#20010;&#23545;&#35937;&#65306;        </p><pre class="programlisting">cat.setWeight(11.0);  // hit the db to initialize the proxySystem.out.println( dc.getWeight() );  // 11.0</pre><p>            &#31532;&#19977;&#65292;&#20320;&#19981;&#33021;&#23545;<tt class="literal">final</tt>&#30340;&#31867;&#25110;&#32773;&#20855;&#26377;<tt class="literal">final</tt>&#26041;&#27861;&#30340;&#31867;&#20351;&#29992;CGLIB&#20195;&#29702;&#12290;        </p><p>            &#26368;&#21518;,&#20551;&#22914;&#20320;&#30340;&#25345;&#20037;&#21270;&#23545;&#35937;&#22312;&#23454;&#20363;&#21270;&#30340;&#26102;&#20505;&#38656;&#35201;&#26576;&#20123;&#36164;&#28304;&#65288;&#27604;&#22914;&#65292;&#22312;&#23454;&#20363;&#21270;&#26041;&#27861;&#25110;&#32773;&#40664;&#35748;&#26500;&#36896;&#26041;&#27861;&#20013;&#65289;&#65292;&#36825;&#20123;&#36164;&#28304;&#20063;&#20250;&#34987;&#20195;&#29702;&#38656;&#35201;&#12290;&#20195;&#29702;&#31867;&#23454;&#38469;&#19978;&#26159;&#25345;&#20037;&#21270;&#31867;&#30340;&#23376;&#31867;&#12290;        </p><p>            &#36825;&#20123;&#38382;&#39064;&#37117;&#26469;&#28304;&#20110;Java&#30340;&#21333;&#26681;&#32487;&#25215;&#27169;&#22411;&#30340;&#22825;&#29983;&#38480;&#21046;&#12290;&#22914;&#26524;&#20320;&#24076;&#26395;&#36991;&#20813;&#36825;&#20123;&#38382;&#39064;&#65292;&#20320;&#30340;&#27599;&#20010;&#25345;&#20037;&#21270;&#31867;&#24517;&#39035;&#25277;&#35937;&#20986;&#19968;&#20010;&#25509;&#21475;&#65292;&#22768;&#26126;&#21830;&#19994;&#36923;&#36753;&#26041;&#27861;&#12290;&#20320;&#24212;&#35813;&#22312;&#26144;&#23556;&#25991;&#20214;&#20013;&#25351;&#23450;&#36825;&#20123;&#25509;&#21475;&#65292;&#27604;&#22914;&#65306;        </p><pre class="programlisting">&lt;class name="eg.Cat" proxy="eg.ICat"&gt;    ......    &lt;subclass name="eg.DomesticCat" proxy="eg.IDomesticCat"&gt;        .....    &lt;/subclass&gt;&lt;/class&gt;</pre><p>            &#36825;&#37324;<tt class="literal">Cat</tt>&#23454;&#29616;<tt class="literal">ICat</tt>&#25509;&#21475;&#65292;&#24182;&#19988;<tt class="literal">DomesticCat</tt>&#23454;&#29616;<tt class="literal">IDomesticCat</tt>&#25509;&#21475;&#12290;&#20110;&#26159; <tt class="literal">load()</tt>&#25110;&#32773;<tt class="literal">iterate()</tt>&#23601;&#20250;&#36820;&#22238;<tt class="literal">Cat</tt>&#21644;<tt class="literal">DomesticCat</tt>&#30340;&#23454;&#20363;&#30340;&#20195;&#29702;&#12290;(&#27880;&#24847;<tt class="literal">find()</tt>&#19981;&#20250;&#36820;&#22238;&#20195;&#29702;&#12290;)        </p><pre class="programlisting">ICat cat = (ICat) session.load(Cat.class, catid);Iterator iter = session.iterate("from cat in class eg.Cat where cat.name='fritz'");ICat fritz = (ICat) iter.next();</pre><p>            &#20851;&#31995;&#20063;&#26159;&#24310;&#36831;&#35013;&#36733;&#30340;&#12290;&#36825;&#24847;&#21619;&#30528;&#20320;&#24517;&#39035;&#25226;&#20219;&#20309;&#23646;&#24615;&#22768;&#26126;&#20026;<tt class="literal">ICat</tt>&#31867;&#22411;&#65292;&#32780;&#38750;<tt class="literal">Cat</tt>&#12290;        </p><p>            &#26576;&#20123;&#29305;&#23450;&#25805;&#20316;<span class="emphasis"><em>&#19981;</em></span>&#38656;&#35201;&#21021;&#22987;&#21270;&#20195;&#29702;        </p><div class="itemizedlist"><ul type="disc" compact><li><p>                        <tt class="literal">equals()</tt>, &#20551;&#22914;&#25345;&#20037;&#21270;&#31867;&#27809;&#26377;&#37325;&#36733;<tt class="literal">equals()</tt>                    </p></li><li><p>                        <tt class="literal">hashCode()</tt>, &#20551;&#22914;&#25345;&#20037;&#21270;&#31867;&#27809;&#26377;&#37325;&#36733;<tt class="literal">hashCode()</tt>                    </p></li><li><p>                        &#26631;&#35782;&#31526;&#30340;get&#26041;&#27861;                    </p></li></ul></div><p>            Hibernate&#20250;&#35782;&#21035;&#20986;&#37325;&#36733;&#20102;<tt class="literal">equals()</tt> &#25110;&#32773; <tt class="literal">hashCode()</tt>&#26041;&#27861;&#30340;&#25345;&#20037;&#21270;&#31867;&#12290;        </p><p>            &#22312;&#21021;&#22987;&#21270;&#20195;&#29702;&#30340;&#26102;&#20505;&#21457;&#29983;&#30340;&#24322;&#24120;&#20250;&#34987;&#21253;&#35013;&#25104;<tt class="literal">LazyInitializationException</tt>&#12290;        </p><p>        &#26377;&#26102;&#20505;&#25105;&#20204;&#38656;&#35201;&#20445;&#35777;&#22312;<tt class="literal">Session</tt>&#20851;&#38381;&#21069;&#26576;&#20010;&#20195;&#29702;&#25110;&#32773;&#38598;&#21512;&#24050;&#32463;&#34987;&#21021;&#22987;&#21270;&#20102;&#12290;&#24403;&#28982;&#65292;&#25105;&#20204;&#24635;&#26159;&#21487;&#20197;&#36890;&#36807;&#35843;&#29992;<tt class="literal">cat.getSex()</tt>&#25110;&#32773; <tt class="literal">cat.getKittens().size()</tt>&#20043;&#31867;&#30340;&#26041;&#27861;&#26469;&#30830;&#20445;&#36825;&#19968;&#28857;&#12290;&#20294;&#26159;&#36825;&#26679;&#31243;&#24207;&#21487;&#35835;&#24615;&#19981;&#20339;&#65292;&#20063;&#19981;&#31526;&#21512;&#36890;&#24120;&#30340;&#20195;&#30721;&#35268;&#33539;&#12290;&#38745;&#24577;&#26041;&#27861;<tt class="literal">Hibernate.initialize()</tt>&#21644;<tt class="literal">Hibernate.isInitialized()</tt>&#32473;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#19968;&#20010;&#27491;&#24120;&#30340;&#36884;&#24452;&#26469;&#21152;&#36733;&#38598;&#21512;&#25110;&#20195;&#29702;&#12290;<tt class="literal">Hibernate.initialize(cat)</tt> &#20250;&#24378;&#21046;&#21021;&#22987;&#21270;&#19968;&#20010;&#20195;&#29702;,<tt class="literal">cat</tt>,&#21482;&#35201;&#23427;&#30340;<tt class="literal">Session</tt>&#20173;&#28982;&#25171;&#24320;&#12290;<tt class="literal">Hibernate.initialize( cat.getKittens() )</tt>&#23545;kittens&#30340;&#38598;&#21512;&#20855;&#26377;&#21516;&#26679;&#30340;&#21151;&#33021;&#12290;        </p></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="performance-cache"></a>14.3.&nbsp;&#31532;&#20108;&#23618;&#32531;&#23384;(The Second Level Cache)s</h2></div></div><div></div></div><p>            Hibernate<tt class="literal">Session</tt>&#26159;&#20107;&#21153;&#32423;&#21035;&#30340;&#25345;&#20037;&#21270;&#25968;&#25454;&#32531;&#23384;&#12290;&#20877;&#20026;&#27599;&#20010;&#31867;&#25110;&#32773;&#27599;&#20010;&#38598;&#21512;&#37197;&#32622;&#19968;&#20010;&#38598;&#32676;&#25110;&#32773;JVM&#32423;&#21035;(<tt class="literal">SessionFactory</tt>&#32423;&#21035;)&#30340;&#32531;&#23384;&#20063;&#26159;&#26377;&#21487;&#33021;&#30340;&#12290;&#20320;&#29978;&#33267;&#21487;&#20197;&#25554;&#20837;&#19968;&#20010;&#38598;&#32676;&#30340;&#32531;&#23384;&#12290;&#35201;&#23567;&#24515;&#65292;&#32531;&#23384;&#27704;&#36828;&#19981;&#20250;&#30693;&#36947;&#20854;&#20182;&#36827;&#31243;&#21487;&#33021;&#23545;&#25345;&#20037;&#21270;&#20179;&#24211;&#65288;&#25968;&#25454;&#24211;&#65289;&#36827;&#34892;&#30340;&#20462;&#25913;&#65288;&#21363;&#20351;&#20182;&#20204;&#21487;&#33021;&#35774;&#23450;&#20026;&#32463;&#24120;&#23545;&#32531;&#23384;&#30340;&#25968;&#25454;&#36827;&#34892;&#22833;&#25928;&#65289;&#12290;        </p><p>            &#40664;&#35748;&#24773;&#20917;&#19979;&#65292;Hibernate&#20351;&#29992;EHCache&#36827;&#34892;JVM&#32423;&#21035;&#30340;&#32531;&#23384;&#12290;&#20294;&#26159;&#65292;&#23545;JCS&#30340;&#25903;&#25345;&#29616;&#22312;&#24050;&#32463;&#34987;&#24223;&#24323;&#20102;&#65292;&#26410;&#26469;&#29256;&#26412;&#30340;Hibernate&#23558;&#20250;&#21435;&#25481;&#23427;&#12290;&#36890;&#36807;<tt class="literal">hibernate.cache.provider_class</tt>&#23646;&#24615;&#65292;&#20320;&#20063;&#21487;&#20197;&#25351;&#23450;&#20854;&#20182;&#32531;&#23384;&#65292;&#21482;&#35201;&#20854;&#23454;&#29616;&#20102;<tt class="literal">net.sf.hibernate.cache.CacheProvider</tt>&#25509;&#21475;&#12290;         </p><div class="table"><a name="d0e8649"></a><p class="title"><b>&#34920;&nbsp;14.1.&nbsp;Cache Providers</b></p><table summary="Cache Providers" border="1"><colgroup><col align="left"><col align="left"><col align="left"><col align="left"><col align="left"></colgroup><thead><tr><th align="left">Cache</th><th align="left">Provider class</th><th align="left">Type</th><th align="left">Cluster Safe</th><th align="left">Query Cache Supported</th></tr></thead><tbody><tr><td align="left">Hashtable (not intended for production use)</td><td align="left"><tt class="literal">net.sf.hibernate.cache.HashtableCacheProvider</tt></td><td align="left">memory</td><td align="left">&nbsp;</td><td align="left">yes</td></tr><tr><td align="left">EHCache</td><td align="left"><tt class="literal">net.sf.hibernate.cache.EhCacheProvider</tt></td><td align="left">memory, disk</td><td align="left">&nbsp;</td><td align="left">yes</td></tr><tr><td align="left">OSCache</td><td align="left"><tt class="literal">net.sf.hibernate.cache.OSCacheProvider</tt></td><td align="left">memory, disk</td><td align="left">&nbsp;</td><td align="left">yes</td></tr><tr><td align="left">SwarmCache</td><td align="left"><tt class="literal">net.sf.hibernate.cache.SwarmCacheProvider</tt></td><td align="left">clustered (ip multicast)</td><td align="left">yes (clustered invalidation)</td><td align="left">&nbsp;</td></tr><tr><td align="left">JBoss TreeCache</td><td align="left"><tt class="literal">net.sf.hibernate.cache.TreeCacheProvider</tt></td><td align="left">clustered (ip multicast), transactional</td><td align="left">yes (replication)</td><td align="left">&nbsp;</td></tr></tbody></table></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="performance-cache-mapping"></a>14.3.1.&nbsp;&#23545;&#26144;&#23556;(Mapping)&#32531;&#20914;</h3></div></div><div></div></div><p>                &#31867;&#25110;&#32773;&#38598;&#21512;&#26144;&#23556;&#30340;<tt class="literal">&lt;cache&gt;</tt>&#20803;&#32032;&#21487;&#33021;&#26377;&#19979;&#21015;&#24418;&#24335;&#65306;            </p><div class="programlistingco"><pre class="programlisting">&lt;cache                                                      <span class="co">(1)</span>                usage="transactional|read-write|nonstrict-read-write|read-only" /&gt;</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left">(1)</td><td valign="top" align="left"><p>                            <tt class="literal">usage</tt> &#25351;&#23450;&#20102;&#32531;&#23384;&#31574;&#30053;&#65306;                            <tt class="literal">transactional</tt>,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -