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

📄 performance.html

📁 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
							&#26597;&#35810;&#25235;&#21462;&#65288;&#40664;&#35748;&#30340;&#65289;&#22312;N+1&#26597;&#35810;&#30340;&#24773;&#20917;&#19979;&#26159;&#26497;&#20854;&#33030;&#24369;&#30340;&#65292;&#22240;&#27492;&#25105;&#20204;&#21487;&#33021;&#20250;&#35201;&#27714;&#22312;&#26144;&#23556;&#25991;&#26723;&#20013;&#23450;&#20041;&#20351;&#29992;&#36830;&#25509;&#25235;&#21462;&#65306;			</p><pre class="programlisting">&lt;set name="permissions"             fetch="join"&gt;    &lt;key column="userId"/&gt;    &lt;one-to-many class="Permission"/&gt;&lt;/set</pre><pre class="programlisting">&lt;many-to-one name="mother" class="Cat" fetch="join"/&gt;</pre><p>			    &#22312;&#26144;&#23556;&#25991;&#26723;&#20013;&#23450;&#20041;&#30340;<tt class="literal">&#25235;&#21462;</tt>&#31574;&#30053;&#23558;&#20250;&#23545;&#20197;&#19979;&#21015;&#34920;&#26465;&#30446;&#20135;&#29983;&#24433;&#21709;&#65306;            </p><div class="itemizedlist"><ul type="disc"><li><p>               			        &#36890;&#36807;<tt class="literal">get()</tt>&#25110;<tt class="literal">load()</tt>&#26041;&#27861;&#21462;&#24471;&#25968;&#25454;&#12290;			    </p></li><li><p>				    &#21482;&#26377;&#22312;&#20851;&#32852;&#20043;&#38388;&#36827;&#34892;&#23548;&#33322;&#26102;&#65292;&#25165;&#20250;&#38544;&#24335;&#30340;&#21462;&#24471;&#25968;&#25454;&#12290;                </p></li><li><p>					<tt class="literal">&#26465;&#20214;&#26597;&#35810;</tt>                </p></li><li><p>                    &#20351;&#29992;&#20102;<tt class="literal">subselect</tt>&#25235;&#21462;&#30340;HQL&#26597;&#35810;                </p></li></ul></div><p>                &#19981;&#31649;&#20320;&#20351;&#29992;&#21738;&#31181;&#25235;&#21462;&#31574;&#30053;&#65292;&#23450;&#20041;&#20026;&#38750;&#24310;&#36831;&#30340;&#31867;&#22270;&#20250;&#34987;&#20445;&#35777;&#19968;&#23450;&#35013;&#36733;&#20837;&#20869;&#23384;&#12290;&#27880;&#24847;&#36825;&#21487;&#33021;&#24847;&#21619;&#30528;&#22312;&#19968;&#26465;HQL&#26597;&#35810;&#21518;&#32039;&#36319;&#30528;&#19968;&#31995;&#21015;&#30340;&#26597;&#35810;&#12290;            </p><p>			    &#36890;&#24120;&#24773;&#20917;&#19979;&#65292;&#25105;&#20204;&#24182;&#19981;&#20351;&#29992;&#26144;&#23556;&#25991;&#26723;&#36827;&#34892;&#25235;&#21462;&#31574;&#30053;&#30340;&#23450;&#21046;&#12290;&#26356;&#22810;&#30340;&#26159;&#65292;&#20445;&#25345;&#20854;&#40664;&#35748;&#20540;&#65292;&#28982;&#21518;&#22312;&#29305;&#23450;&#30340;&#20107;&#21153;&#20013;&#65292;				&#20351;&#29992;HQL&#30340;<tt class="literal">&#24038;&#36830;&#25509;&#25235;&#21462;&#65288;left join fetch&#65289;</tt> &#23545;&#20854;&#36827;&#34892;&#37325;&#36733;&#12290;&#36825;&#23558;&#36890;&#30693;				Hibernate&#22312;&#31532;&#19968;&#27425;&#26597;&#35810;&#20013;&#20351;&#29992;&#22806;&#37096;&#20851;&#32852;&#65288;outer join&#65289;&#65292;&#30452;&#25509;&#24471;&#21040;&#20854;&#20851;&#32852;&#25968;&#25454;&#12290;				&#22312;<tt class="literal">&#26465;&#20214;&#26597;&#35810;</tt> API&#20013;&#65292;&#24212;&#35813;&#35843;&#29992; <tt class="literal">setFetchMode(FetchMode.JOIN)</tt>&#35821;&#21477;&#12290;            </p><p>				&#20063;&#35768;&#20320;&#21916;&#27426;&#20165;&#20165;&#36890;&#36807;&#26465;&#20214;&#26597;&#35810;&#65292;&#23601;&#21487;&#20197;&#25913;&#21464;<tt class="literal">get()</tt> 				&#25110; <tt class="literal">load()</tt>&#35821;&#21477;&#20013;&#30340;&#25968;&#25454;&#25235;&#21462;&#31574;&#30053;&#12290;&#20363;&#22914;&#65306;            </p><pre class="programlisting">User user = (User) session.createCriteria(User.class)            	.setFetchMode("permissions", FetchMode.JOIN)            	.add( Restrictions.idEq(userId) )            	.uniqueResult();</pre><p>             			    &#65288;&#36825;&#23601;&#26159;&#20854;&#20182;ORM&#35299;&#20915;&#26041;&#26696;&#30340;&#8220;&#25235;&#21462;&#35745;&#21010;(fetch plan)&#8221;&#22312;Hibernate&#20013;&#30340;&#31561;&#20215;&#29289;&#12290;&#65289;            </p><p>				&#25130;&#28982;&#19981;&#21516;&#30340;&#19968;&#31181;&#36991;&#20813;N+1&#27425;&#26597;&#35810;&#30340;&#26041;&#27861;&#26159;&#65292;&#20351;&#29992;&#20108;&#32423;&#32531;&#23384;&#12290;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="performance-fetching-proxies"></a>19.1.3.&nbsp;&#21333;&#31471;&#20851;&#32852;&#20195;&#29702;&#65288;Single-ended association proxies&#65289;			</h3></div></div><div></div></div><p>				&#22312;Hinerbate&#20013;&#65292;&#23545;&#38598;&#21512;&#30340;&#24310;&#36831;&#25235;&#21462;&#30340;&#37319;&#29992;&#20102;&#33258;&#24049;&#30340;&#23454;&#29616;&#26041;&#27861;&#12290;&#20294;&#26159;&#65292;&#23545;&#20110;&#21333;&#31471;&#20851;&#32852;&#30340;&#24310;&#36831;&#25235;&#21462;&#65292;&#21017;&#38656;&#35201;&#37319;&#29992;				&#20854;&#20182;&#19981;&#21516;&#30340;&#26426;&#21046;&#12290;&#21333;&#31471;&#20851;&#32852;&#30340;&#30446;&#26631;&#23454;&#20307;&#24517;&#39035;&#20351;&#29992;&#20195;&#29702;&#65292;Hihernate&#22312;&#36816;&#34892;&#26399;&#20108;&#36827;&#21046;&#32423;&#65288;&#36890;&#36807;&#20248;&#24322;&#30340;CGLIB&#24211;&#65289;&#65292;				&#20026;&#25345;&#20037;&#23545;&#35937;&#23454;&#29616;&#20102;&#24310;&#36831;&#36733;&#20837;&#20195;&#29702;&#12290;				            </p><p>				&#40664;&#35748;&#30340;&#65292;Hibernate3&#23558;&#20250;&#20026;&#25152;&#26377;&#30340;&#25345;&#20037;&#23545;&#35937;&#20135;&#29983;&#20195;&#29702;&#65288;&#22312;&#21551;&#21160;&#38454;&#27573;&#65289;&#65292;&#28982;&#21518;&#20351;&#29992;&#20182;&#20204;&#23454;&#29616;				<tt class="literal">&#22810;&#23545;&#19968;&#65288;many-to-one&#65289;</tt>&#20851;&#32852;&#21644;<tt class="literal">&#19968;&#23545;&#19968;&#65288;one-to-one&#65289;</tt>				&#20851;&#32852;&#30340;&#24310;&#36831;&#25235;&#21462;&#12290;            </p><p>				&#22312;&#26144;&#23556;&#25991;&#20214;&#20013;&#65292;&#21487;&#20197;&#36890;&#36807;&#35774;&#32622;<tt class="literal">proxy</tt>&#23646;&#24615;&#20026;&#30446;&#26631;class&#22768;&#26126;&#19968;&#20010;&#25509;&#21475;&#20379;&#20195;&#29702;&#25509;&#21475;&#20351;&#29992;&#12290;				&#40664;&#35748;&#30340;&#65292;Hibernate&#23558;&#20250;&#20351;&#29992;&#35813;&#31867;&#30340;&#19968;&#20010;&#23376;&#31867;&#12290;				<span class="emphasis"><em>&#27880;&#24847;&#65306;&#34987;&#20195;&#29702;&#30340;&#31867;&#24517;&#39035;&#23454;&#29616;&#19968;&#20010;&#33267;&#23569;&#21253;&#21487;&#35265;&#30340;&#40664;&#35748;&#26500;&#36896;&#20989;&#25968;&#65292;&#25105;&#20204;&#24314;&#35758;&#25152;&#26377;&#30340;&#25345;&#20037;&#31867;&#37117;&#24212;&#25317;&#26377;&#36825;&#26679;&#30340;&#26500;&#36896;&#20989;&#25968;</em></span>            </p><p>				&#22312;&#22914;&#27492;&#26041;&#24335;&#23450;&#20041;&#19968;&#20010;&#22810;&#24577;&#31867;&#30340;&#26102;&#20505;&#65292;&#26377;&#35768;&#22810;&#20540;&#24471;&#27880;&#24847;&#30340;&#24120;&#35265;&#24615;&#30340;&#38382;&#39064;&#65292;&#20363;&#22914;&#65306;            </p><pre class="programlisting">&lt;class name="Cat" proxy="Cat"&gt;    ......    &lt;subclass name="DomesticCat"&gt;        .....    &lt;/subclass&gt;&lt;/class&gt;</pre><p>				&#39318;&#20808;&#65292;<tt class="literal">Cat</tt>&#23454;&#20363;&#27704;&#36828;&#19981;&#21487;&#20197;&#34987;&#24378;&#21046;&#36716;&#25442;&#20026;<tt class="literal">DomesticCat</tt>,				&#21363;&#20351;&#23427;&#26412;&#36523;&#23601;&#26159;<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;&#8220;<tt class="literal">==</tt>&#8221;&#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);  // acquire new DomesticCat proxy!System.out.println(cat==dc);                            // false</pre><p>				&#34429;&#28982;&#22914;&#27492;&#65292;&#20294;&#23454;&#38469;&#24773;&#20917;&#24182;&#27809;&#26377;&#30475;&#19978;&#21435;&#37027;&#20040;&#31967;&#31957;&#12290;&#34429;&#28982;&#25105;&#20204;&#29616;&#22312;&#26377;&#20004;&#20010;&#19981;&#21516;&#30340;&#24341;&#29992;&#65292;&#20998;&#21035;&#25351;&#21521;&#36825;&#20004;&#20010;&#19981;&#21516;&#30340;&#20195;&#29702;&#23545;&#35937;&#65292;				&#20294;&#23454;&#38469;&#19978;&#65292;&#20854;&#24213;&#23618;&#24212;&#35813;&#26159;&#21516;&#19968;&#20010;&#23454;&#20363;&#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;&#8220;final&#31867;&#8221;&#25110;&#8220;&#20855;&#26377;final&#26041;&#27861;&#30340;&#31867;&#8221;&#20351;&#29992;CGLIB&#20195;&#29702;&#12290; 				            </p><p>				&#26368;&#21518;&#65292;&#22914;&#26524;&#20320;&#30340;&#25345;&#20037;&#21270;&#23545;&#35937;&#22312;&#23454;&#20363;&#21270;&#26102;&#38656;&#35201;&#26576;&#20123;&#36164;&#28304;&#65288;&#20363;&#22914;&#65292;&#22312;&#23454;&#20363;&#21270;&#26041;&#27861;&#12289;&#40664;&#35748;&#26500;&#36896;&#26041;&#27861;&#20013;&#65289;&#65292;				&#37027;&#20040;&#20195;&#29702;&#23545;&#35937;&#20063;&#21516;&#26679;&#38656;&#35201;&#20351;&#29992;&#36825;&#20123;&#36164;&#28304;&#12290;&#23454;&#38469;&#19978;&#65292;&#20195;&#29702;&#31867;&#26159;&#25345;&#20037;&#21270;&#31867;&#30340;&#23376;&#31867;&#12290; 				            </p><p>							&#36825;&#20123;&#38382;&#39064;&#37117;&#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;&#37027;&#20040;&#20320;&#30340;&#27599;&#20010;&#25345;&#20037;&#21270;&#31867;&#24517;&#39035;&#23454;&#29616;&#19968;&#20010;&#25509;&#21475;&#65292;				&#22312;&#27492;&#25509;&#21475;&#20013;&#24050;&#32463;&#22768;&#26126;&#20102;&#20854;&#19994;&#21153;&#26041;&#27861;&#12290;&#28982;&#21518;&#65292;&#20320;&#38656;&#35201;&#22312;&#26144;&#23556;&#25991;&#26723;&#20013;&#20877;&#25351;&#23450;&#36825;&#20123;&#25509;&#21475;&#12290;&#20363;&#22914;&#65306; 

⌨️ 快捷键说明

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