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

📄 performance.html

📁 是一个中文的Hibernate库文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;20&nbsp;&#31456;&nbsp;&#25552;&#21319;&#24615;&#33021;	</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="up" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="previous" href="xml.html" title="&#31532;&nbsp;19&nbsp;&#31456;&nbsp;XML&#26144;&#23556;"><link rel="next" href="toolsetguide.html" title="&#31532;&nbsp;21&nbsp;&#31456;&nbsp;&#24037;&#20855;&#31665;&#25351;&#21335;"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">&#31532;&nbsp;20&nbsp;&#31456;&nbsp;&#25552;&#21319;&#24615;&#33021;	</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xml.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="toolsetguide.html">&#19979;&#19968;&#39029;</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="performance"></a>&#31532;&nbsp;20&nbsp;&#31456;&nbsp;&#25552;&#21319;&#24615;&#33021;	</h2></div></div><div></div></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="performance-fetching"></a>20.1.&nbsp;				&#25235;&#21462;&#31574;&#30053;(Fetching strategies)		</h2></div></div><div></div></div><p>				<span class="emphasis"><em>&#25235;&#21462;&#31574;&#30053;&#65288;fetching strategy&#65289;</em></span> &#26159;&#25351;&#65306;&#24403;&#24212;&#29992;&#31243;&#24207;&#38656;&#35201;&#22312;&#65288;Hibernate&#23454;&#20307;&#23545;&#35937;&#22270;&#30340;&#65289;&#20851;&#32852;&#20851;&#31995;&#38388;&#36827;&#34892;&#23548;&#33322;&#30340;&#26102;&#20505;&#65292;			Hibernate&#22914;&#20309;&#33719;&#21462;&#20851;&#32852;&#23545;&#35937;&#30340;&#31574;&#30053;&#12290;&#25235;&#21462;&#31574;&#30053;&#21487;&#20197;&#22312;O/R&#26144;&#23556;&#30340;&#20803;&#25968;&#25454;&#20013;&#22768;&#26126;&#65292;&#20063;&#21487;&#20197;&#22312;&#29305;&#23450;&#30340;HQL			&#25110;<tt class="literal">&#26465;&#20214;&#26597;&#35810;&#65288;Criteria Query&#65289;</tt>&#20013;&#37325;&#36733;&#22768;&#26126;&#12290;			        </p><p>			Hibernate3 &#23450;&#20041;&#20102;&#22914;&#19979;&#20960;&#31181;&#25235;&#21462;&#31574;&#30053;&#65306;        </p><div class="itemizedlist"><ul type="disc"><li><p>						<span class="emphasis"><em>&#36830;&#25509;&#25235;&#21462;&#65288;Join fetching&#65289;</em></span> - Hibernate&#36890;&#36807;					&#22312;<tt class="literal">SELECT</tt>&#35821;&#21477;&#20351;&#29992;<tt class="literal">OUTER JOIN</tt>&#65288;&#22806;&#36830;&#25509;&#65289;&#26469;					&#33719;&#24471;&#23545;&#35937;&#30340;&#20851;&#32852;&#23454;&#20363;&#25110;&#32773;&#20851;&#32852;&#38598;&#21512;&#12290;                </p></li><li><p>					<span class="emphasis"><em>&#26597;&#35810;&#25235;&#21462;&#65288;Select fetching&#65289;</em></span> - &#21478;&#22806;&#21457;&#36865;&#19968;&#26465; <tt class="literal">SELECT</tt>                    &#35821;&#21477;&#25235;&#21462;&#24403;&#21069;&#23545;&#35937;&#30340;&#20851;&#32852;&#23454;&#20307;&#25110;&#38598;&#21512;&#12290;&#38500;&#38750;&#20320;&#26174;&#24335;&#30340;&#25351;&#23450;<tt class="literal">lazy="false"</tt>&#31105;&#27490;				&#24310;&#36831;&#25235;&#21462;&#65288;lazy fetching&#65289;&#65292;&#21542;&#21017;&#21482;&#26377;&#24403;&#20320;&#30495;&#27491;&#35775;&#38382;&#20851;&#32852;&#20851;&#31995;&#30340;&#26102;&#20505;&#65292;&#25165;&#20250;&#25191;&#34892;&#31532;&#20108;&#26465;select&#35821;&#21477;&#12290;                           </p></li><li><p>				 <span class="emphasis"><em>&#23376;&#26597;&#35810;&#25235;&#21462;&#65288;Subselect fetching&#65289;</em></span> - &#21478;&#22806;&#21457;&#36865;&#19968;&#26465;<tt class="literal">SELECT</tt>				 &#35821;&#21477;&#25235;&#21462;&#22312;&#21069;&#38754;&#26597;&#35810;&#21040;&#65288;&#25110;&#32773;&#25235;&#21462;&#21040;&#65289;&#30340;&#25152;&#26377;&#23454;&#20307;&#23545;&#35937;&#30340;&#20851;&#32852;&#38598;&#21512;&#12290;&#38500;&#38750;&#20320;&#26174;&#24335;&#30340;&#25351;&#23450;<tt class="literal">lazy="false"</tt>				 &#31105;&#27490;&#24310;&#36831;&#25235;&#21462;&#65288;lazy fetching&#65289;&#65292;&#21542;&#21017;&#21482;&#26377;&#24403;&#20320;&#30495;&#27491;&#35775;&#38382;&#20851;&#32852;&#20851;&#31995;&#30340;&#26102;&#20505;&#65292;&#25165;&#20250;&#25191;&#34892;&#31532;&#20108;&#26465;select&#35821;&#21477;&#12290;                </p></li><li><p>    	                <span class="emphasis"><em>&#25209;&#37327;&#25235;&#21462;&#65288;Batch fetching&#65289;</em></span> - &#23545;&#26597;&#35810;&#25235;&#21462;&#30340;&#20248;&#21270;&#26041;&#26696;&#65292;				&#36890;&#36807;&#25351;&#23450;&#19968;&#20010;&#20027;&#38190;&#25110;&#22806;&#38190;&#21015;&#34920;&#65292;Hibernate&#20351;&#29992;&#21333;&#26465;<tt class="literal">SELECT</tt>&#35821;&#21477;&#33719;&#21462;&#19968;&#25209;&#23545;&#35937;&#23454;&#20363;&#25110;&#38598;&#21512;&#12290;                </p></li></ul></div><p>            Hibernate&#20250;&#21306;&#20998;&#19979;&#21015;&#21508;&#31181;&#24773;&#20917;&#65306;        </p><div class="itemizedlist"><ul type="disc"><li><p>                    <span class="emphasis"><em>Immediate fetching&#65292;&#31435;&#21363;&#25235;&#21462;</em></span> - &#24403;&#23487;&#20027;&#34987;&#21152;&#36733;&#26102;&#65292;&#20851;&#32852;&#12289;&#38598;&#21512;&#25110;&#23646;&#24615;&#34987;&#31435;&#21363;&#25235;&#21462;&#12290;                </p></li><li><p>                    <span class="emphasis"><em>Lazy collection fetching&#65292;&#24310;&#36831;&#38598;&#21512;&#25235;&#21462;</em></span>- &#30452;&#21040;&#24212;&#29992;&#31243;&#24207;&#23545;&#38598;&#21512;&#36827;&#34892;&#20102;&#19968;&#27425;&#25805;&#20316;&#26102;&#65292;&#38598;&#21512;&#25165;&#34987;&#25235;&#21462;&#12290;&#65288;&#23545;&#38598;&#21512;&#32780;&#35328;&#36825;&#26159;&#40664;&#35748;&#34892;&#20026;&#12290;&#65289;                </p></li><li><p>                    <span class="emphasis"><em>Proxy fetching&#65292;&#20195;&#29702;&#25235;&#21462;</em></span>  - &#23545;&#36820;&#22238;&#21333;&#20540;&#30340;&#20851;&#32852;&#32780;&#35328;&#65292;&#24403;&#20854;&#26576;&#20010;&#26041;&#27861;&#34987;&#35843;&#29992;&#65292;&#32780;&#38750;&#23545;&#20854;&#20851;&#38190;&#23383;&#36827;&#34892;get&#25805;&#20316;&#26102;&#25165;&#25235;&#21462;&#12290;                </p></li><li><p>                    <span class="emphasis"><em>Lazy attribute fetching&#65292;&#23646;&#24615;&#24310;&#36831;&#21152;&#36733;</em></span> - &#23545;&#23646;&#24615;&#25110;&#36820;&#22238;&#21333;&#20540;&#30340;&#20851;&#32852;&#32780;&#35328;&#65292;&#24403;&#20854;&#23454;&#20363;&#21464;&#37327;&#34987;&#35775;&#38382;&#30340;&#26102;&#20505;&#36827;&#34892;&#25235;&#21462;&#65288;&#38656;&#35201;&#36816;&#34892;&#26102;&#23383;&#33410;&#30721;&#24378;&#21270;&#65289;&#12290;&#36825;&#19968;&#26041;&#27861;&#24456;&#23569;&#26159;&#24517;&#35201;&#30340;&#12290;                </p></li></ul></div><p>            &#36825;&#37324;&#26377;&#20004;&#20010;&#27491;&#20132;&#30340;&#27010;&#24565;&#65306;&#20851;&#32852;<span class="emphasis"><em>&#20309;&#26102;</em></span>&#34987;&#25235;&#21462;&#65292;&#20197;&#21450;&#34987;<span class="emphasis"><em>&#22914;&#20309;</em></span>&#25235;&#21462;&#65288;&#20250;&#37319;&#29992;&#20160;&#20040;&#26679;&#30340;SQL&#35821;&#21477;&#65289;&#12290;&#19981;&#35201;&#28151;&#28102;&#23427;&#20204;&#65281;&#25105;&#20204;&#20351;&#29992;<tt class="literal">&#25235;&#21462;</tt>&#26469;&#25913;&#21892;&#24615;&#33021;&#12290;&#25105;&#20204;&#20351;&#29992;<tt class="literal">&#24310;&#36831;</tt>&#26469;&#23450;&#20041;&#19968;&#20123;&#22865;&#32422;&#65292;&#23545;&#26576;&#29305;&#23450;&#31867;&#30340;&#26576;&#20010;&#33073;&#31649;&#30340;&#23454;&#20363;&#65292;&#30693;&#36947;&#26377;&#21738;&#20123;&#25968;&#25454;&#26159;&#21487;&#20197;&#20351;&#29992;&#30340;&#12290;        </p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="performance-fetching-lazy"></a>20.1.1.&nbsp;&#25805;&#20316;&#24310;&#36831;&#21152;&#36733;&#30340;&#20851;&#32852;</h3></div></div><div></div></div><p>                &#40664;&#35748;&#24773;&#20917;&#19979;&#65292;Hibernate 3&#23545;&#38598;&#21512;&#20351;&#29992;&#24310;&#36831;select&#25235;&#21462;&#65292;&#23545;&#36820;&#22238;&#21333;&#20540;&#30340;&#20851;&#32852;&#20351;&#29992;&#24310;&#36831;&#20195;&#29702;&#25235;&#21462;&#12290;&#23545;&#20960;&#20046;&#26159;&#25152;&#26377;&#30340;&#24212;&#29992;&#32780;&#35328;&#65292;&#20854;&#32477;&#22823;&#22810;&#25968;&#30340;&#20851;&#32852;&#65292;&#36825;&#31181;&#31574;&#30053;&#37117;&#26159;&#26377;&#25928;&#30340;&#12290;            </p><p>                <span class="emphasis"><em>&#27880;&#24847;:</em></span>&#20551;&#33509;&#20320;&#35774;&#32622;&#20102;<tt class="literal">hibernate.default_batch_fetch_size</tt>,Hibernate&#20250;&#23545;&#24310;&#36831;&#21152;&#36733;&#37319;&#21462;&#25209;&#37327;&#25235;&#21462;&#20248;&#21270;&#25514;&#26045;&#65288;&#36825;&#31181;&#20248;&#21270;&#20063;&#21487;&#33021;&#20250;&#22312;&#26356;&#32454;&#21270;&#30340;&#32423;&#21035;&#25171;&#24320;&#65289;&#12290;            </p><p>                &#28982;&#32780;&#65292;&#20320;&#24517;&#39035;&#20102;&#35299;&#24310;&#36831;&#25235;&#21462;&#24102;&#26469;&#30340;&#19968;&#20010;&#38382;&#39064;&#12290;&#22312;&#19968;&#20010;&#25171;&#24320;&#30340;Hibernate session&#19978;&#19979;&#25991;&#20043;&#22806;&#35843;&#29992;&#24310;&#36831;&#38598;&#21512;&#20250;&#23548;&#33268;&#19968;&#27425;&#24847;&#22806;&#12290;&#27604;&#22914;&#65306;            </p><pre class="programlisting">s = sessions.openSession();Transaction tx = s.beginTransaction();            User u = (User) s.createQuery("from User u where u.name=:userName")	.setString("userName", userName).uniqueResult();Map permissions = u.getPermissions();tx.commit();s.close();Integer accessLevel = (Integer) permissions.get("accounts");  // Error!</pre><p>		 &#22312;<tt class="literal">Session</tt>&#20851;&#38381;&#21518;&#65292;permessions&#38598;&#21512;&#23558;&#26159;&#26410;&#23454;&#20363;&#21270;&#30340;&#12289;&#19981;&#20877;&#21487;&#29992;&#65292;&#22240;&#27492;&#26080;&#27861;&#27491;&#24120;&#36733;&#20837;&#20854;&#29366;&#24577;&#12290;            <span class="emphasis"><em>Hibernate&#23545;&#33073;&#31649;&#23545;&#35937;&#19981;&#25903;&#25345;&#24310;&#36831;&#23454;&#20363;&#21270;</em></span>. &#36825;&#37324;&#30340;&#20462;&#25913;&#26041;&#27861;&#26159;&#65306;&#23558;permissions&#35835;&#21462;&#25968;&#25454;&#30340;&#20195;&#30721;			&#31227;&#21040;tx.commit()&#20043;&#21069;&#12290;        </p><p>			&#38500;&#27492;&#20043;&#22806;&#65292;&#36890;&#36807;&#23545;&#20851;&#32852;&#26144;&#23556;&#25351;&#23450;<tt class="literal">lazy="false"</tt>,&#25105;&#20204;&#20063;&#21487;&#20197;&#20351;&#29992;&#38750;&#24310;&#36831;&#30340;&#38598;&#21512;&#25110;&#20851;&#32852;&#12290;&#20294;&#26159;&#65292;			&#23545;&#32477;&#22823;&#37096;&#20998;&#38598;&#21512;&#26469;&#35828;&#65292;&#26356;&#25512;&#33616;&#20351;&#29992;&#24310;&#36831;&#26041;&#24335;&#25235;&#21462;&#25968;&#25454;&#12290;&#22914;&#26524;&#22312;&#20320;&#30340;&#23545;&#35937;&#27169;&#22411;&#20013;&#23450;&#20041;&#20102;&#22826;&#22810;&#30340;&#38750;&#24310;&#36831;&#20851;&#32852;&#65292;Hibernate&#26368;&#32456;&#20960;&#20046;&#38656;&#35201;&#22312;&#27599;&#20010;&#20107;&#21153;&#20013;&#36733;&#20837;&#25972;&#20010;&#25968;&#25454;&#24211;&#21040;&#20869;&#23384;&#20013;&#65281;        </p><p>         		    &#20294;&#26159;&#65292;&#21478;&#19968;&#26041;&#38754;&#65292;&#22312;&#19968;&#20123;&#29305;&#27530;&#30340;&#20107;&#21153;&#20013;&#65292;&#25105;&#20204;&#20063;&#32463;&#24120;&#38656;&#35201;&#20351;&#29992;&#21040;&#36830;&#25509;&#25235;&#21462;&#65288;&#23427;&#26412;&#36523;&#19978;&#23601;&#26159;&#38750;&#24310;&#36831;&#30340;&#65289;&#65292;&#20197;&#20195;&#26367;&#26597;&#35810;&#25235;&#21462;&#12290;			&#19979;&#38754;&#25105;&#20204;&#23558;&#20250;&#24456;&#24555;&#26126;&#30333;&#22914;&#20309;&#20855;&#20307;&#30340;&#23450;&#21046;Hibernate&#20013;&#30340;&#25235;&#21462;&#31574;&#30053;&#12290;&#22312;Hibernate3&#20013;&#65292;&#20855;&#20307;&#36873;&#25321;&#21738;&#31181;&#25235;&#21462;&#31574;&#30053;&#30340;&#26426;&#21046;&#26159;&#21644;&#36873;&#25321;			&#21333;&#20540;&#20851;&#32852;&#25110;&#38598;&#21512;&#20851;&#32852;&#30456;&#19968;&#33268;&#30340;&#12290;	    </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="performance-fetching-custom"></a>20.1.2.&nbsp;							&#35843;&#25972;&#25235;&#21462;&#31574;&#30053;&#65288;Tuning fetch strategies&#65289;    		</h3></div></div><div></div></div><p>							&#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;

⌨️ 快捷键说明

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