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

📄 best-practices.html

📁 hibernate的一点学习资料!
💻 HTML
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>Chapter&nbsp;20.&nbsp;&#26368;&#20339;&#23454;&#36341;(Best Practices)</title><link rel="stylesheet" href="../styles/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.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="toolsetguide.html" title="Chapter&nbsp;19.&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">Chapter&nbsp;20.&nbsp;&#26368;&#20339;&#23454;&#36341;(Best Practices)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="toolsetguide.html">Prev</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="best-practices"></a>Chapter&nbsp;20.&nbsp;&#26368;&#20339;&#23454;&#36341;(Best Practices)</h2></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">&#35774;&#35745;&#32454;&#39063;&#31890;&#24230;&#30340;&#25345;&#20037;&#31867;&#24182;&#19988;&#20351;&#29992;<tt class="literal">&lt;component&gt;</tt>&#26469;&#23454;&#29616;&#26144;&#23556;&#12290;</span></dt><dd><p>                    &#20351;&#29992;&#19968;&#20010;<tt class="literal">Address</tt>&#25345;&#20037;&#31867;&#26469;&#23553;&#35013; <tt class="literal">street</tt>,                    <tt class="literal">suburb</tt>, <tt class="literal">state</tt>, <tt class="literal">postcode</tt>.                    &#36825;&#23558;&#26377;&#21033;&#20110;&#20195;&#30721;&#37325;&#29992;&#21644;&#31616;&#21270;&#20195;&#30721;&#37325;&#26500;(refactoring)&#30340;&#24037;&#20316;&#12290;                </p></dd><dt><span class="term">&#23545;&#25345;&#20037;&#31867;&#22768;&#26126;&#26631;&#35782;&#31526;&#23646;&#24615;&#12290;</span></dt><dd><p>                    Hibernate&#20013;&#26631;&#35782;&#31526;&#23646;&#24615;&#26159;&#21487;&#36873;&#30340;&#65292;&#19981;&#36807;&#26377;&#24456;&#22810;&#21407;&#22240;&#26469;&#35828;&#26126;&#20320;&#24212;&#35813;&#20351;&#29992;&#26631;&#35782;&#31526;&#23646;&#24615;&#12290;&#25105;&#20204;&#24314;&#35758;&#26631;&#35782;&#31526;&#24212;&#35813;&#26159;&#8220;&#20154;&#36896;&#8221;&#30340;(&#33258;&#21160;&#29983;&#25104;&#65292;&#19981;&#28041;&#21450;&#19994;&#21153;&#21547;&#20041;)&#65292;&#24182;&#19988;&#19981;&#26159;&#22522;&#26412;&#31867;&#22411;&#12290;&#20026;&#20102;&#26368;&#22823;&#30340;&#28789;&#27963;&#24615;&#65292;&#24212;&#35813;&#20351;&#29992;<tt class="literal">java.lang.Long</tt> or <tt class="literal">java.lang.String</tt>                </p></dd><dt><span class="term">&#20026;&#27599;&#20010;&#25345;&#20037;&#31867;&#20889;&#19968;&#20010;&#26144;&#23556;&#25991;&#20214;</span></dt><dd><p>                     &#19981;&#35201;&#25226;&#25152;&#26377;&#30340;&#25345;&#20037;&#31867;&#26144;&#23556;&#37117;&#20889;&#21040;&#19968;&#20010;&#22823;&#25991;&#20214;&#20013;&#12290;&#25226; <tt class="literal">com.eg.Foo</tt> &#26144;&#23556;&#21040;<tt class="literal">com/eg/Foo.hbm.xml</tt>&#20013;&#65292; &#22312;&#22242;&#38431;&#24320;&#21457;&#29615;&#22659;&#20013;&#65292;&#36825;&#19968;&#28857;&#26174;&#24471;&#29305;&#21035;&#26377;&#24847;&#20041;&#12290;                </p></dd><dt><span class="term">&#25226;&#26144;&#23556;&#25991;&#20214;&#20316;&#20026;&#36164;&#28304;&#21152;&#36733;</span></dt><dd><p>                    &#25226;&#26144;&#23556;&#25991;&#20214;&#21644;&#20182;&#20204;&#30340;&#26144;&#23556;&#31867;&#25918;&#22312;&#19968;&#36215;&#36827;&#34892;&#37096;&#32626;&#12290;                </p></dd><dt><span class="term">&#32771;&#34385;&#25226;&#26597;&#35810;&#23383;&#31526;&#20018;&#25918;&#22312;&#31243;&#24207;&#22806;&#38754;</span></dt><dd><p>                    &#22914;&#26524;&#20320;&#30340;&#26597;&#35810;&#20013;&#35843;&#29992;&#20102;&#38750;ANSI&#26631;&#20934;&#30340;SQL&#20989;&#25968;&#65292;&#37027;&#20040;&#36825;&#26465;&#23454;&#36341;&#32463;&#39564;&#23545;&#20320;&#36866;&#29992;&#12290;&#25226;&#26597;&#35810;&#23383;&#31526;&#20018;&#25918;&#22312;&#31243;&#24207;&#22806;&#38754;&#21487;&#20197;&#35753;&#31243;&#24207;&#20855;&#26377;&#26356;&#22909;&#30340;&#21487;&#31227;&#26893;&#24615;&#12290;                </p></dd><dt><span class="term">&#20351;&#29992;&#32465;&#23450;&#21464;&#37327;</span></dt><dd><p>                     &#23601;&#20687;&#22312;JDBC&#32534;&#31243;&#20013;&#19968;&#26679;&#65292;&#24212;&#35813;&#24635;&#26159;&#29992;&#21344;&#20301;&#31526;"?"&#26469;&#26367;&#25442;&#38750;&#24120;&#37327;&#20540;&#65292;&#19981;&#35201;&#22312;&#26597;&#35810;&#20013;&#29992;&#23383;&#31526;&#20018;&#20540;&#26469;&#26500;&#36896;&#38750;&#24120;&#37327;&#20540;&#65281;&#26356;&#22909;&#30340;&#21150;&#27861;&#26159;&#22312;&#26597;&#35810;&#20013;&#20351;&#29992;&#21629;&#21517;&#21442;&#25968;&#12290;                </p></dd><dt><span class="term">&#19981;&#35201;&#33258;&#24049;&#26469;&#31649;&#29702;JDBC connections</span></dt><dd><p>                    Hibernate&#20801;&#35768;&#24212;&#29992;&#31243;&#24207;&#33258;&#24049;&#26469;&#31649;&#29702;JDBC connections&#65292;&#20294;&#26159;&#24212;&#35813;&#20316;&#20026;&#26368;&#21518;&#27809;&#26377;&#21150;&#27861;&#30340;&#21150;&#27861;&#12290;&#22914;&#26524;&#20320;&#19981;&#33021;&#20351;&#29992;Hibernate&#20869;&#24314;&#30340;connections providers&#65292;&#37027;&#20040;&#32771;&#34385;&#23454;&#29616;&#33258;&#24049;&#26469;&#23454;&#29616;<tt class="literal">net.sf.hibernate.connection.ConnectionProvider</tt>                </p></dd><dt><span class="term">&#32771;&#34385;&#20351;&#29992;&#29992;&#25143;&#33258;&#23450;&#20041;&#31867;&#22411;(custom type)</span></dt><dd><p>                    <tt class="literal">net.sf.hibernate.UserType</tt>. This approach frees the application                    code from implementing transformations to / from a Hibernate type.                    &#20551;&#35774;&#20320;&#26377;&#19968;&#20010;Java&#31867;&#22411;&#65292;&#26469;&#33258;&#26576;&#20123;&#31867;&#24211;&#65292;&#38656;&#35201;&#34987;&#25345;&#20037;&#21270;&#65292;&#20294;&#26159;&#35813;&#31867;&#27809;&#26377;&#25552;&#20379;&#26144;&#23556;&#25805;&#20316;&#38656;&#35201;&#30340;&#23384;&#21462;&#26041;&#27861;&#12290;&#37027;&#20040;&#20320;&#24212;&#35813;&#32771;&#34385;&#23454;&#29616;<tt class="literal">net.sf.hibernate.UserType</tt>&#25509;&#21475;&#12290;&#36825;&#31181;&#21150;&#27861;&#20351;&#31243;&#24207;&#20195;&#30721;&#20889;&#36215;&#26469;&#26356;&#21152;&#33258;&#22914;&#65292;&#19981;&#20877;&#38656;&#35201;&#32771;&#34385;&#31867;&#19982;Hibernate type&#20043;&#38388;&#30340;&#30456;&#20114;&#36716;&#25442;&#12290;                </p></dd><dt><span class="term">&#22312;&#24615;&#33021;&#29942;&#39048;&#30340;&#22320;&#26041;&#20351;&#29992;&#30828;&#32534;&#30721;&#30340;JDBC</span></dt><dd><p>                    &#22312;&#23545;&#24615;&#33021;&#35201;&#27714;&#24456;&#20005;&#26684;&#30340;&#19968;&#20123;&#31995;&#32479;&#20013;&#65292;&#19968;&#20123;&#25805;&#20316;(&#20363;&#22914;&#25209;&#37327;&#26356;&#26032;&#21644;&#25209;&#37327;&#21024;&#38500;)&#20063;&#35768;&#30452;&#25509;&#20351;&#29992;JDBC&#20250;&#26356;&#22909;&#65292;&#20294;&#26159;&#35831;&#20808;<span class="emphasis"><em>&#25630;&#28165;&#26970;</em></span>&#36825;&#26159;&#21542;&#26159;&#19968;&#20010;&#29942;&#39048;&#65292;&#24182;&#19988;&#19981;&#35201;&#24819;&#24403;&#28982;&#35748;&#20026;JDBC&#19968;&#23450;&#20250;&#26356;&#24555;&#12290;&#22914;&#26524;&#30830;&#23454;&#38656;&#35201;&#30452;&#25509;&#20351;&#29992;JDBC&#65292;&#37027;&#20040;&#26368;&#22909;&#25171;&#24320;&#19968;&#20010;Hibernate <tt class="literal">Session</tt> &#28982;&#21518;&#20174; <tt class="literal">Session</tt>&#33719;&#24471;connection&#65292;&#25353;&#29031;&#36825;&#31181;&#21150;&#27861;&#20320;&#20173;&#28982;&#21487;&#20197;&#20351;&#29992;&#21516;&#26679;&#30340;transaction&#31574;&#30053;&#21644;&#24213;&#23618;&#30340;connection provider&#12290;                </p></dd><dt><span class="term">&#29702;&#35299;<tt class="literal">Session</tt>&#28165;&#27927;&#65288; flushing&#65289;</span></dt><dd><p>                    Session&#20250;&#19981;&#26102;&#30340;&#21521;&#25968;&#25454;&#24211;&#21516;&#27493;&#25345;&#20037;&#21270;&#29366;&#24577;&#65292;&#22914;&#26524;&#36825;&#31181;&#25805;&#20316;&#36827;&#34892;&#30340;&#36807;&#20110;&#39057;&#32321;&#65292;&#37027;&#20040;&#24615;&#33021;&#20250;&#21463;&#21040;&#19968;&#23450;&#30340;&#24433;&#21709;&#12290;&#26377;&#26102;&#20505;&#20320;&#21487;&#20197;&#36890;&#36807;&#31105;&#27490;&#33258;&#21160;flushing&#23613;&#37327;&#26368;&#23567;&#21270;&#38750;&#24517;&#35201;&#30340;flushing&#25805;&#20316;&#65292;&#25110;&#32773;&#26356;&#36827;&#19968;&#27493;&#65292;&#22312;&#19968;&#20010;&#29305;&#27530;transaction&#20013;&#25913;&#21464;&#26597;&#35810;&#21644;&#20854;&#23427;&#25805;&#20316;&#30340;&#39034;&#24207;&#12290;                </p></dd><dt><span class="term">&#22312;&#19977;&#23618;&#26550;&#26500;&#20013;&#65292;&#32771;&#34385;&#20351;&#29992; <tt class="literal">saveOrUpdate()</tt></span></dt><dd><p>                    &#24403;&#20351;&#29992;&#19968;&#20010;servlet / session bean &#30340;&#26550;&#26500;&#30340;&#26102;&#20505;, &#20320;&#21487;&#20197;&#25226;&#24050;&#21152;&#36733;&#30340;&#25345;&#20037;&#23545;&#35937;&#22312;session bean&#23618;&#21644;servlet / JSP &#23618;&#20043;&#38388;&#26469;&#22238;&#20256;&#36882;&#12290;&#20351;&#29992;&#26032;&#30340;session&#26469;&#20026;&#27599;&#20010;&#35831;&#27714;&#26381;&#21153;&#65292;&#20351;&#29992; <tt class="literal">Session.update()</tt> &#25110;&#32773;<tt class="literal">Session.saveOrUpdate()</tt>&#26469;&#26356;&#26032;&#23545;&#35937;&#30340;&#25345;&#20037;&#29366;&#24577;&#12290;                </p></dd><dt><span class="term">&#22312;&#20004;&#23618;&#26550;&#26500;&#20013;&#65292;&#32771;&#34385;&#20351;&#29992;session disconnection.</span></dt><dd><p>                    &#24403;&#20165;&#20165;&#20351;&#29992; servlet&#30340;&#26102;&#20505;&#65292;&#20320;&#21487;&#20197;&#22312;&#22810;&#20010;&#23458;&#25143;&#35831;&#27714;&#20013;&#22797;&#29992;&#21516;&#19968;&#20010;session&#65292;&#21482;&#26159;&#35201;&#35760;&#24471;&#22312;&#25226;&#25511;&#21046;&#26435;&#20132;&#36824;&#32473;&#23458;&#25143;&#31471;&#20043;&#21069;disconnect&#25481;session&#12290;                </p></dd><dt><span class="term">&#19981;&#35201;&#25226;&#24322;&#24120;&#30475;&#25104;&#21487;&#24674;&#22797;&#30340;</span></dt><dd><p>                    &#36825;&#19968;&#28857;&#29978;&#33267;&#27604;&#8220;&#26368;&#20339;&#23454;&#36341;&#8221;&#36824;&#35201;&#37325;&#35201;&#65292;&#36825;&#26159;&#8220;&#24517;&#22791;&#24120;&#35782;&#8221;&#12290;&#24403;&#24322;&#24120;&#21457;&#29983;&#30340;&#26102;&#20505;&#65292;&#22238;&#28378; <tt class="literal">Transaction</tt> &#65292;&#20851;&#38381;<tt class="literal">Session</tt>&#12290;&#22914;&#26524;&#20320;&#19981;&#36825;&#26679;&#20570;&#30340;&#35805;&#65292;Hibernate&#26080;&#27861;&#20445;&#35777;&#20869;&#23384;&#29366;&#24577;&#31934;&#30830;&#30340;&#21453;&#24212;&#25345;&#20037;&#29366;&#24577;&#12290;&#23588;&#20854;&#19981;&#35201;&#20351;&#29992;<tt class="literal">Session.load()</tt>&#26469;&#21028;&#26029;&#19968;&#20010;&#32473;&#23450;&#26631;&#35782;&#31526;&#30340;&#23545;&#35937;&#23454;&#20363;&#22312;&#25968;&#25454;&#24211;&#20013;&#26159;&#21542;&#23384;&#22312;&#65292;&#24212;&#35813;&#20351;&#29992;<tt class="literal">find()</tt>&#12290;                </p></dd><dt><span class="term">&#23545;&#20110;&#20851;&#32852;&#20248;&#20808;&#32771;&#34385;lazy fetching </span></dt><dd><p>                    &#35880;&#24910;&#30340;&#20351;&#29992;&#20027;&#21160;&#22806;&#36830;&#25509;&#25235;&#21462;(eager (outer-join) fetching)&#12290;&#23545;&#20110;&#22823;&#22810;&#25968;&#27809;&#26377;JVM&#32423;&#21035;&#32531;&#23384;&#30340;&#25345;&#20037;&#23545;&#35937;&#30340;&#20851;&#32852;&#65292;&#24212;&#35813;&#20351;&#29992;&#20195;&#29702;(proxies)&#25110;&#32773;&#20855;&#26377;&#24310;&#36831;&#21152;&#36733;&#23646;&#24615;&#30340;&#38598;&#21512;(lazy collections)&#12290;&#23545;&#20110;&#34987;&#32531;&#23384;&#30340;&#23545;&#35937;&#30340;&#20851;&#32852;&#65292;&#23588;&#20854;&#26159;&#32531;&#23384;&#30340;&#21629;&#20013;&#29575;&#38750;&#24120;&#39640;&#30340;&#24773;&#20917;&#19979;&#65292;&#24212;&#35813;&#20351;&#29992;<tt class="literal">outer-join="false"</tt>&#65292;&#26174;&#24335;&#30340;&#31105;&#27490;&#25481;eager fetching&#12290;&#22914;&#26524;&#37027;&#20123;&#29305;&#27530;&#30340;&#30830;&#23454;&#36866;&#21512;&#20351;&#29992;outer-join fetch &#30340;&#22330;&#21512;&#65292;&#35831;&#22312;&#26597;&#35810;&#20013;&#20351;&#29992;<tt class="literal">left join</tt>&#12290;                </p></dd><dt><span class="term">&#32771;&#34385;&#25226;Hibernate&#20195;&#30721;&#20174;&#19994;&#21153;&#36923;&#36753;&#20195;&#30721;&#20013;&#25277;&#35937;&#20986;&#26469;</span></dt><dd><p>                    &#25226;Hibernate&#30340;&#25968;&#25454;&#23384;&#21462;&#20195;&#30721;&#38544;&#34255;&#21040;&#25509;&#21475;(interface)&#30340;&#21518;&#38754;&#65292;&#32452;&#21512;&#20351;&#29992;<span class="emphasis"><em>DAO</em></span>&#21644;<span class="emphasis"><em>Thread Local Session</em></span>&#27169;&#24335;&#12290;&#36890;&#36807;Hibernate&#30340;<tt class="literal">UserType</tt>&#65292;&#20320;&#29978;&#33267;&#21487;&#20197;&#29992;&#30828;&#32534;&#30721;&#30340;JDBC&#26469;&#25345;&#20037;&#21270;&#37027;&#20123;&#26412;&#35813;&#34987;Hibernate&#25345;&#20037;&#21270;&#30340;&#31867;&#12290; (&#35813;&#24314;&#35758;&#26356;&#36866;&#29992;&#20110;&#35268;&#27169;&#36275;&#22815;&#22823;&#24212;&#29992;&#36719;&#20214;&#20013;&#65292;&#23545;&#20110;&#37027;&#20123;&#21482;&#26377;5&#24352;&#34920;&#30340;&#24212;&#29992;&#31243;&#24207;&#24182;&#19981;&#36866;&#21512;&#12290;)                </p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="toolsetguide.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;19.&nbsp;&#24037;&#20855;&#31665;&#25351;&#21335;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>

⌨️ 快捷键说明

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