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

📄 collections.html

📁 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;6&nbsp;&#31456;&nbsp;&#38598;&#21512;&#31867;(Collections)&#26144;&#23556;</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="mapping.html" title="&#31532;&nbsp;5&nbsp;&#31456;&nbsp;&#23545;&#35937;/&#20851;&#31995;&#25968;&#25454;&#24211;&#26144;&#23556;&#22522;&#30784;(Basic O/R Mapping)"><link rel="next" href="associations.html" title="&#31532;&nbsp;7&nbsp;&#31456;&nbsp;&#20851;&#32852;&#20851;&#31995;&#26144;&#23556;"></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;6&nbsp;&#31456;&nbsp;&#38598;&#21512;&#31867;(Collections)&#26144;&#23556;</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mapping.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="associations.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="collections"></a>&#31532;&nbsp;6&nbsp;&#31456;&nbsp;&#38598;&#21512;&#31867;(Collections)&#26144;&#23556;</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="collections-persistent"></a>6.1.&nbsp;&#25345;&#20037;&#21270;&#38598;&#21512;&#31867;(Persistent collections)</h2></div></div><div></div></div><p><a name="collections-persistent-translate-comment"></a>            (&#35793;&#32773;&#27880;&#65306;&#22312;&#38405;&#35835;&#26412;&#31456;&#30340;&#26102;&#20505;&#65292;&#20197;&#21518;&#25972;&#20010;&#25163;&#20876;&#30340;&#38405;&#35835;&#36807;&#31243;&#20013;&#65292;&#25105;&#20204;&#37117;&#20250;&#38754;&#20020;&#19968;&#20010;&#21517;&#35789;&#26041;&#38754;&#30340;&#38382;&#39064;&#65292;&#37027;&#23601;&#26159;&#8220;&#38598;&#21512;&#8221;&#12290;"Collections"&#21644;"Set"&#22312;&#20013;&#25991;&#37324;&#23545;&#24212;&#37117;&#34987;&#32763;&#35793;&#20026;&#8220;&#38598;&#21512;&#8221;&#65292;&#20294;&#26159;&#20182;&#20204;&#30340;&#21547;&#20041;&#24456;&#19981;&#19968;&#26679;&#12290;Collections&#26159;&#19968;&#20010;&#36229;&#38598;&#65292;Set&#26159;&#20854;&#20013;&#30340;&#19968;&#31181;&#12290;&#22823;&#37096;&#20998;&#24773;&#20917;&#19979;&#65292;&#26412;&#35793;&#31295;&#20013;&#27867;&#25351;&#30340;&#26410;&#21152;&#33521;&#25991;&#27880;&#26126;&#30340;&#8220;&#38598;&#21512;&#8221;&#65292;&#37117;&#24212;&#24403;&#29702;&#35299;&#20026;&#8220;Collections&#8221;&#12290;&#22312;&#26377;&#20123;&#20108;&#32773;&#21516;&#26102;&#20986;&#29616;&#65292;&#21487;&#33021;&#36896;&#25104;&#28151;&#28102;&#30340;&#22320;&#26041;&#65292;&#25105;&#20204;&#29992;&#8220;&#38598;&#21512;&#31867;&#8221;&#26469;&#29305;&#25351;&#8220;Collecions&#8221;,&#8220;&#38598;&#21512;(Set)&#8221;&#26469;&#25351;"Set"&#65292;&#19968;&#33324;&#37117;&#20250;&#22312;&#21518;&#38754;&#30340;&#25324;&#21495;&#20013;&#32473;&#20986;&#33521;&#25991;&#12290;&#24076;&#26395;&#22823;&#23478;&#22312;&#38405;&#35835;&#26102;&#32852;&#31995;&#19978;&#19979;&#25991;&#29702;&#35299;&#65292;&#19981;&#35201;&#36896;&#25104;&#35823;&#35299;&#12290;            &#19982;&#27492;&#21516;&#26102;&#65292;&#8220;&#20803;&#32032;&#8221;&#19968;&#35789;&#23545;&#24212;&#30340;&#33521;&#25991;&#8220;element&#8221;&#65292;&#20063;&#26377;&#20004;&#20010;&#19981;&#21516;&#30340;&#21547;&#20041;&#12290;&#20854;&#19968;&#20026;&#38598;&#21512;&#30340;&#20803;&#32032;&#65292;&#26159;&#20869;&#23384;&#20013;&#30340;&#19968;&#20010;&#21464;&#37327;&#65307;&#21478;&#19968;&#21547;&#20041;&#21017;&#26159;XML&#25991;&#26723;&#20013;&#30340;&#19968;&#20010;&#26631;&#31614;&#25152;&#20195;&#34920;&#30340;&#20803;&#32032;&#12290;&#20063;&#35831;&#27880;&#24847;&#21306;&#21035;&#12290;            &#26412;&#31456;&#20013;,&#29305;&#21035;&#26159;&#21518;&#21322;&#37096;&#20998;&#26159;&#38656;&#35201;&#21453;&#22797;&#38405;&#35835;&#25165;&#33021;&#29702;&#35299;&#28165;&#26970;&#30340;&#12290;&#22914;&#26524;&#36935;&#21040;&#20219;&#20309;&#30097;&#38382;,&#35831;&#35760;&#20303;,&#33521;&#25991;&#29256;&#26412;&#30340;reference&#26159;&#24799;&#19968;&#26631;&#20934;&#30340;&#21442;&#32771;&#36164;&#26009;&#12290;)            </p><p>            Hibernate&#35201;&#27714;&#25345;&#20037;&#21270;&#38598;&#21512;&#20540;&#23383;&#27573;&#24517;&#39035;&#22768;&#26126;&#20026;&#25509;&#21475;&#65292;&#27604;&#22914;&#65306;        </p><pre class="programlisting">public class Product {    private String serialNumber;    private Set parts = new HashSet();        public Set getParts() { return parts; }    void setParts(Set parts) { this.parts = parts; }    public String getSerialNumber() { return serialNumber; }    void setSerialNumber(String sn) { serialNumber = sn; }}</pre><p>            &#23454;&#38469;&#30340;&#25509;&#21475;&#21487;&#33021;&#26159;<tt class="literal">java.util.Set</tt>,            <tt class="literal">java.util.Collection</tt>, <tt class="literal">java.util.List</tt>,            <tt class="literal">java.util.Map</tt>, <tt class="literal">java.util.SortedSet</tt>,            <tt class="literal">java.util.SortedMap</tt> &#25110;&#32773;...&#20219;&#20309;&#20320;&#21916;&#27426;&#30340;&#31867;&#22411;&#65281;("&#20219;&#20309;&#20320;&#21916;&#27426;&#30340;&#31867;&#22411;" &#20195;&#34920;&#20320;&#38656;&#35201;&#32534;&#20889;           <tt class="literal">org.hibernate.usertype.UserCollectionType</tt>&#30340;&#23454;&#29616;.)        </p><p>            &#27880;&#24847;&#25105;&#20204;&#26159;&#22914;&#20309;&#29992;&#19968;&#20010;<tt class="literal">HashSet</tt>&#23454;&#20363;&#26469;&#21021;&#22987;&#21270;&#23454;&#20363;&#21464;&#37327;&#30340;.&#36825;&#26159;&#29992;&#20110;&#21021;&#22987;&#21270;&#26032;&#21019;&#24314;(&#23578;&#26410;&#25345;&#20037;&#21270;)&#30340;&#31867;&#23454;&#20363;&#20013;&#38598;&#21512;&#20540;&#23646;&#24615;&#30340;&#26368;&#20339;&#26041;&#27861;&#12290;&#24403;&#20320;&#25345;&#20037;&#21270;&#36825;&#20010;&#23454;&#20363;&#26102;&#8212;&#8212;&#27604;&#22914;&#36890;&#36807;&#35843;&#29992;<tt class="literal">persist()</tt>&#8212;&#8212;Hibernate &#20250;&#33258;&#21160;&#25226;<tt class="literal">HashSet</tt>&#26367;&#25442;&#20026;Hibernate&#33258;&#24049;&#30340;<tt class="literal">Set</tt>&#23454;&#29616;&#12290;&#35266;&#23519;&#19979;&#38754;&#30340;&#38169;&#35823;&#65306;        </p><pre class="programlisting">Cat cat = new DomesticCat();Cat kitten = new DomesticCat();....Set kittens = new HashSet();kittens.add(kitten);cat.setKittens(kittens);session.persist(cat);kittens = cat.getKittens(); //Okay, kittens collection is a Set(HashSet) cat.getKittens(); //Error!</pre><p>                    &#26681;&#25454;&#19981;&#21516;&#30340;&#25509;&#21475;&#31867;&#22411;&#65292;&#34987;Hibernate&#27880;&#23556;&#30340;&#25345;&#20037;&#21270;&#38598;&#21512;&#31867;&#30340;&#34920;&#29616;&#31867;&#20284;<tt class="literal">HashMap</tt>, <tt class="literal">HashSet</tt>,            <tt class="literal">TreeMap</tt>, <tt class="literal">TreeSet</tt> or            <tt class="literal">ArrayList</tt>&#12290;		</p><p>        	&#38598;&#21512;&#31867;&#23454;&#20363;&#20855;&#26377;&#20540;&#31867;&#22411;&#30340;&#36890;&#24120;&#34892;&#20026;&#12290;&#24403;&#34987;&#25345;&#20037;&#21270;&#23545;&#35937;&#24341;&#29992;&#21518;&#65292;&#20182;&#20204;&#20250;&#33258;&#21160;&#34987;&#25345;&#20037;&#21270;&#65292;&#24403;&#19981;&#20877;&#34987;&#24341;&#29992;&#21518;&#65292;&#33258;&#21160;&#34987;&#21024;&#38500;&#12290;&#20551;&#33509;&#23454;&#20363;&#34987;&#20174;&#19968;&#20010;&#25345;&#20037;&#21270;&#23545;&#35937;&#20256;&#36882;&#21040;&#21478;&#19968;&#20010;&#65292;&#23427;&#30340;&#20803;&#32032;&#21487;&#33021;&#20174;&#19968;&#20010;&#34920;&#36716;&#31227;&#21040;&#21478;&#19968;&#20010;&#34920;&#12290;&#20004;&#20010;&#23454;&#20307;&#19981;&#33021;&#20849;&#20139;&#21516;&#19968;&#20010;&#38598;&#21512;&#31867;&#23454;&#20363;&#30340;&#24341;&#29992;&#12290;&#22240;&#20026;&#24213;&#23618;&#20851;&#31995;&#25968;&#25454;&#24211;&#27169;&#22411;&#30340;&#21407;&#22240;&#65292;&#38598;&#21512;&#20540;&#23646;&#24615;&#26080;&#27861;&#25903;&#25345;&#31354;&#20540;&#35821;&#20041;&#65307;Hibernate&#23545;&#31354;&#30340;&#38598;&#21512;&#24341;&#29992;&#21644;&#31354;&#38598;&#21512;&#19981;&#21152;&#21306;&#21035;&#12290;        </p><p>        &#20320;&#19981;&#38656;&#35201;&#36807;&#22810;&#30340;&#20026;&#27492;&#25285;&#24515;&#12290;&#23601;&#22914;&#21516;&#20320;&#24179;&#26102;&#20351;&#29992;&#26222;&#36890;&#30340;Java&#38598;&#21512;&#31867;&#19968;&#26679;&#26469;&#20351;&#29992;&#25345;&#20037;&#21270;&#38598;&#21512;&#31867;&#12290;&#21482;&#26159;&#35201;&#30830;&#35748;&#20320;&#29702;&#35299;&#20102;&#21452;&#21521;&#20851;&#32852;&#30340;&#35821;&#20041;&#65288;&#21518;&#25991;&#35752;&#35770;&#65289;&#12290;        </p></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-mapping"></a>6.2.&nbsp;&#38598;&#21512;&#26144;&#23556;&#65288; Collection mappings &#65289;</h2></div></div><div></div></div><p>        &#29992;&#20110;&#26144;&#23556;&#38598;&#21512;&#31867;&#30340;Hibernate&#26144;&#23556;&#20803;&#32032;&#21462;&#20915;&#20110;&#25509;&#21475;&#30340;&#31867;&#22411;&#12290;&#27604;&#22914;&#65292; <tt class="literal">&lt;set&gt;</tt> &#20803;&#32032;&#29992;&#26469;&#26144;&#23556;<tt class="literal">Set</tt>&#31867;&#22411;&#30340;&#23646;&#24615;&#12290;        </p><pre class="programlisting">&lt;class name="Product"&gt;    &lt;id name="serialNumber" column="productSerialNumber"/&gt;    &lt;set name="parts"&gt;        &lt;key column="productSerialNumber" not-null="true"/&gt;        &lt;one-to-many class="Part"/&gt;    &lt;/set&gt;&lt;/class&gt;</pre><p>        &#38500;&#20102;<tt class="literal">&lt;set&gt;</tt>,&#36824;&#26377;<tt class="literal">&lt;list&gt;</tt>, <tt class="literal">&lt;map&gt;</tt>,            <tt class="literal">&lt;bag&gt;</tt>, <tt class="literal">&lt;array&gt;</tt> &#21644;            <tt class="literal">&lt;primitive-array&gt;</tt> &#26144;&#23556;&#20803;&#32032;&#12290;<tt class="literal">&lt;map&gt;</tt>&#20855;&#26377;&#20195;&#34920;&#24615;&#65306;        </p><div class="programlistingco"><pre class="programlisting">&lt;map    name="propertyName"                                         <span class="co">(1)</span>    table="table_name"                                          <span class="co">(2)</span>    schema="schema_name"                                        <span class="co">(3)</span>    lazy="true|extra|false"                                     <span class="co">(4)</span>    inverse="true|false"                                        <span class="co">(5)</span>    cascade="all|none|save-update|delete|all-delete-orphan|delet<span class="co">(6)</span>e-orphan"    sort="unsorted|natural|comparatorClass"                     <span class="co">(7)</span>    order-by="column_name asc|desc"                             <span class="co">(8)</span>    where="arbitrary sql where condition"                       <span class="co">(9)</span>    fetch="join|select|subselect"                               <span class="co">(10)</span>    batch-size="N"                                              <span class="co">(11)</span>    access="field|property|ClassName"                           <span class="co">(12)</span>    optimistic-lock="true|false"                                <span class="co">(13)</span>    mutable="true|false"                                        <span class="co">(14)</span>    node="element-name|."    embed-xml="true|false"&gt;    &lt;key .... /&gt;    &lt;map-key .... /&gt;    &lt;element .... /&gt;&lt;/map&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">name</tt> &#38598;&#21512;&#23646;&#24615;&#30340;&#21517;&#31216;                        </p></td></tr><tr><td width="5%" valign="top" align="left">(2)</td><td valign="top" align="left"><p>							<tt class="literal">table</tt> &#65288;&#21487;&#36873;&#8212;&#8212;&#40664;&#35748;&#20026;&#23646;&#24615;&#30340;&#21517;&#31216;&#65289;&#36825;&#20010;&#38598;&#21512;&#34920;&#30340;&#21517;&#31216;(&#19981;&#33021;&#22312;&#19968;&#23545;&#22810;&#30340;&#20851;&#32852;&#20851;&#31995;&#20013;&#20351;&#29992;)                        </p></td></tr><tr><td width="5%" valign="top" align="left">(3)</td><td valign="top" align="left"><p>                            <tt class="literal">schema</tt> (&#21487;&#36873;) &#34920;&#30340;schema&#30340;&#21517;&#31216;, &#20182;&#23558;&#35206;&#30422;&#22312;&#26681;&#20803;&#32032;&#20013;&#23450;&#20041;&#30340;schema                        </p></td></tr><tr><td width="5%" valign="top" align="left">(4)</td><td valign="top" align="left"><p>                            <tt class="literal">lazy</tt> (&#21487;&#36873;--&#40664;&#35748;&#20026;true) &#21487;&#20197;&#29992;&#26469;&#20851;&#38381;&#24310;&#36831;&#21152;&#36733;(false)&#65292;&#25351;&#23450;&#19968;&#30452;&#20351;&#29992;&#39044;&#20808;&#25235;&#21462;,&#25110;&#32773;&#25171;&#24320;"extra-lazy" &#25235;&#21462;&#65292;&#27492;&#26102;&#22823;&#22810;&#25968;&#25805;&#20316;&#19981;&#20250;&#21021;&#22987;&#21270;&#38598;&#21512;&#31867;(&#36866;&#29992;&#20110;&#38750;&#24120;&#22823;&#30340;&#38598;&#21512;)                        </p></td></tr><tr><td width="5%" valign="top" align="left">(5)</td><td valign="top" align="left"><p>                            <tt class="literal">inverse</tt> (&#21487;&#36873;&#8212;&#8212;&#40664;&#35748;&#20026;<tt class="literal">false</tt>)                            &#26631;&#35760;&#36825;&#20010;&#38598;&#21512;&#20316;&#20026;&#21452;&#21521;&#20851;&#32852;&#20851;&#31995;&#20013;&#30340;&#26041;&#21521;&#19968;&#31471;&#12290;                        </p></td></tr><tr><td width="5%" valign="top" align="left">(6)</td><td valign="top" align="left"><p>                            <tt class="literal">cascade</tt> (&#21487;&#36873;&#8212;&#8212;&#40664;&#35748;&#20026;<tt class="literal">none</tt>)                            &#35753;&#25805;&#20316;&#32423;&#32852;&#21040;&#23376;&#23454;&#20307;                        </p></td></tr><tr><td width="5%" valign="top" align="left">(7)</td><td valign="top" align="left"><p>                            <tt class="literal">sort</tt>(&#21487;&#36873;)&#25351;&#23450;&#38598;&#21512;&#30340;&#25490;&#24207;&#39034;&#24207;, &#20854;&#21487;&#20197;&#20026;&#33258;&#28982;&#30340;(<tt class="literal">natural</tt>)&#25110;&#32773;&#32473;&#23450;&#19968;&#20010;&#29992;&#26469;&#27604;&#36739;&#30340;&#31867;&#12290;                        </p></td></tr><tr><td width="5%" valign="top" align="left">(8)</td><td valign="top" align="left"><p>                            <tt class="literal">order-by</tt> (&#21487;&#36873;, &#20165;&#29992;&#20110;jdk1.4) &#25351;&#23450;&#34920;&#30340;&#23383;&#27573;(&#19968;&#20010;&#25110;&#20960;&#20010;)&#20877;&#21152;&#19978;asc&#25110;&#32773;desc(&#21487;&#36873;), &#23450;&#20041;Map,Set&#21644;Bag&#30340;&#36845;&#20195;&#39034;&#24207;                        </p></td></tr><tr><td width="5%" valign="top" align="left">(9)</td><td valign="top" align="left"><p>                            <tt class="literal">where</tt> (&#21487;&#36873;) &#25351;&#23450;&#20219;&#24847;&#30340;SQL where&#26465;&#20214;, &#35813;&#26465;&#20214;&#23558;&#22312;&#37325;&#26032;&#36733;&#20837;&#25110;&#32773;&#21024;&#38500;&#36825;&#20010;&#38598;&#21512;&#26102;&#20351;&#29992;(&#24403;&#38598;&#21512;&#20013;&#30340;&#25968;&#25454;&#20165;&#20165;&#26159;&#25152;&#26377;&#21487;&#29992;&#25968;&#25454;&#30340;&#19968;&#20010;&#23376;&#38598;&#26102;&#36825;&#20010;&#26465;&#20214;&#38750;&#24120;&#26377;&#29992;)                        </p></td></tr><tr><td width="5%" valign="top" align="left">(10)</td><td valign="top" align="left"><p>                        <tt class="literal">fetch</tt> (&#21487;&#36873;, &#40664;&#35748;&#20026;<tt class="literal">select</tt>) &#29992;&#20110;&#22312;&#22806;&#36830;&#25509;&#25235;&#21462;&#12289;&#36890;&#36807;&#21518;&#32493;select&#25235;&#21462;&#21644;&#36890;&#36807;&#21518;&#32493;subselect&#25235;&#21462;&#20043;&#38388;&#36873;&#25321;&#12290;

⌨️ 快捷键说明

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