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

📄 collections.html

📁 hibernate的一点学习资料!
💻 HTML
📖 第 1 页 / 共 5 页
字号:
                &#19968;&#20010;map,&#36890;&#36807;&#23383;&#31526;&#20018;&#30340;&#32034;&#24341;&#26469;&#25351;&#26126;&#26085;&#26399;&#65306;            </p><pre class="programlisting">&lt;map name="holidays" table="holidays" schema="dbo" order-by="hol_name asc"&gt;    &lt;key column="id"/&gt;    &lt;index column="hol_name" type="string"/&gt;    &lt;element column="hol_date" type="date"/&gt;&lt;/map&gt;</pre><p>                &#19968;&#20010;&#32452;&#20214;&#30340;&#21015;&#34920;&#65306;            </p><pre class="programlisting">&lt;list name="carComponents" table="car_components"&gt;    &lt;key column="car_id"/&gt;    &lt;index column="posn"/&gt;    &lt;composite-element class="com.illflow.CarComponent"&gt;            &lt;property name="price" type="float"/&gt;            &lt;property name="type" type="com.illflow.ComponentType"/&gt;            &lt;property name="serialNumber" column="serial_no" type="string"/&gt;    &lt;/composite-element&gt;&lt;/list&gt;</pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-s1-6"></a>6.4.&nbsp;&#19968;&#23545;&#22810;&#20851;&#32852;&#65288;One To Many Associations&#65289;</h2></div></div><div></div></div><p>                <span class="emphasis"><em>&#19968;&#23545;&#22810;&#20851;&#32852;</em></span><span class="emphasis"><em>&#30452;&#25509;</em></span>&#36830;&#25509;&#20004;&#20010;&#31867;&#23545;&#24212;&#30340;&#34920;,&#32780;&#27809;&#26377;&#20013;&#38388;&#38598;&#21512;&#34920;&#12290;(&#36825;&#23454;&#29616;&#20102;&#19968;&#20010;<span class="emphasis"><em>&#19968;&#23545;&#22810;</em></span>&#30340;&#20851;&#31995;&#27169;&#22411;)(&#35793;&#32773;&#27880;:&#36825;&#26377;&#21035;&#19982;&#22810;&#23545;&#22810;&#30340;&#20851;&#32852;&#38656;&#35201;&#19968;&#24352;&#20013;&#38388;&#34920;)&#12290; &#36825;&#20010;&#20851;&#31995;&#27169;&#22411;&#22833;&#21435;&#20102;&#19968;&#20123;Java&#38598;&#21512;&#30340;&#35821;&#20041;:            </p><div class="itemizedlist"><ul type="disc" compact><li><p>			            map,set&#25110;list&#20013;&#19981;&#33021;&#21253;&#21547;null&#20540;                    </p></li><li><p>                        &#19968;&#20010;&#34987;&#21253;&#21547;&#30340;&#23454;&#20307;&#30340;&#23454;&#20363;&#21482;&#33021;&#34987;&#21253;&#21547;&#22312;&#19968;&#20010;&#38598;&#21512;&#30340;&#23454;&#20363;&#20013;                    </p></li><li><p>                        &#19968;&#20010;&#34987;&#21253;&#21547;&#30340;&#23454;&#20307;&#30340;&#23454;&#20363;&#21482;&#33021;&#23545;&#24212;&#20110;&#38598;&#21512;&#32034;&#24341;&#30340;&#19968;&#20010;&#20540;&#20013;                    </p></li></ul></div><p>                &#19968;&#20010;&#20174;<tt class="literal">Foo</tt>&#21040;<tt class="literal">Bar</tt>&#30340;&#20851;&#32852;&#38656;&#35201;&#39069;&#22806;&#30340;&#20851;&#38190;&#23383;&#23383;&#27573;,&#21487;&#33021;&#36824;&#26377;&#19968;&#20010;&#32034;&#24341;&#23383;&#27573;&#25351;&#21521;&#36825;&#20010;&#34987;&#21253;&#21547;&#30340;&#23454;&#20307;&#31867;,<tt class="literal">Bar</tt>&#25152;&#23545;&#24212;&#30340;&#34920;&#12290;&#36825;&#20123;&#23383;&#27573;&#22312;&#26144;&#23556;&#26102;&#20351;&#29992;&#21069;&#38754;&#25552;&#21040;&#30340;<tt class="literal">&lt;key&gt;</tt>&#21644;<tt class="literal">&lt;index&gt;</tt>&#20803;&#32032;&#12290;            </p><p>                <tt class="literal">&lt;one-to-many&gt;</tt>&#26631;&#35760;&#25351;&#26126;&#20102;&#19968;&#20010;&#19968;&#23545;&#22810;&#30340;&#20851;&#32852;&#12290;            </p><div class="programlistingco"><pre class="programlisting">&lt;one-to-many class="ClassName"/&gt;</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="../images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>                            <tt class="literal">class</tt>(&#24517;&#39035;):&#34987;&#20851;&#32852;&#31867;&#30340;&#21517;&#31216;&#12290;                        </p></td></tr></table></div></div><p>                &#20363;&#23376;            </p><pre class="programlisting">&lt;set name="bars"&gt;    &lt;key column="foo_id"/&gt;    &lt;one-to-many class="com.illflow.Bar"/&gt;&lt;/set&gt;</pre><p>                &#27880;&#24847;:<tt class="literal">&lt;one-to-many&gt;</tt>&#20803;&#32032;&#19981;&#38656;&#35201;&#23450;&#20041;&#20219;&#20309;&#23383;&#27573;&#12290; &#20063;&#19981;&#38656;&#35201;&#25351;&#23450;&#34920;&#21517;&#12290;                            </p><p>                <span class="emphasis"><em>&#37325;&#35201;&#25552;&#31034;</em></span>:&#22914;&#26524;<tt class="literal">&#19968;&#23545;&#22810;</tt>&#20851;&#32852;&#20013;&#30340;<tt class="literal">&lt;key&gt;</tt>&#23383;&#27573;&#23450;&#20041;&#25104;<tt class="literal">NOT NULL</tt>,&#37027;&#20040;&#24403;&#21019;&#24314;&#21644;&#26356;&#26032;&#20851;&#32852;&#20851;&#31995;&#26102;Hibernate&#21487;&#33021;&#24341;&#36215;&#32422;&#26463;&#36829;&#20363;&#12290;&#20026;&#20102;&#39044;&#38450;&#36825;&#20010;&#38382;&#39064;,<span class="emphasis"><em>&#20320;&#24517;&#39035;&#20351;&#29992;&#21452;&#21521;&#20851;&#32852;</em></span>&#65292;&#24182;&#19988;&#22312;&#8220;&#22810;&#8221;&#36825;&#19968;&#31471;&#65288;Set&#25110;&#32773;&#26159;bag)&#25351;&#26126;<tt class="literal">inverse="true"</tt>&#12290;            </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-s1-7"></a>6.5.&nbsp;&#24310;&#36831;&#21021;&#22987;&#21270;(&#24310;&#36831;&#21152;&#36733;)&#65288;Lazy Initialization&#65289;</h2></div></div><div></div></div><p>			(&#35793;&#32773;&#27880;: &#26412;&#32763;&#35793;&#31295;&#20013;&#65292;&#23545;Lazy Initiazation&#21644;Eager fetch&#20013;&#30340;lazy,eager&#37319;&#21462;&#24847;&#35793;&#30340;&#26041;&#24335;&#65292;&#20998;&#21035;&#32763;&#35793;&#20026;&#24310;&#36831;&#21021;&#22987;&#21270;&#21644;&#39044;&#20808;&#25235;&#21462;&#12290;lazt initiazation&#23601;&#26159;&#25351;&#30452;&#21040;&#31532;&#19968;&#27425;&#35843;&#29992;&#26102;&#25165;&#21152;&#36733;&#12290;&#65289;			</p><p>                &#38598;&#21512;(&#19981;&#21253;&#25324;&#25968;&#32452;)&#26159;&#21487;&#20197;&#24310;&#36831;&#21021;&#22987;&#21270;&#30340;,&#24847;&#24605;&#26159;&#20165;&#20165;&#24403;&#24212;&#29992;&#31243;&#24207;&#38656;&#35201;&#35775;&#38382;&#26102;&#65292;&#25165;&#36733;&#20837;&#20182;&#20204;&#30340;&#20540;&#12290;&#23545;&#20110;&#20351;&#29992;&#32773;&#26469;&#35828;&#65292;&#21021;&#22987;&#21270;&#26159;&#36879;&#26126;&#30340;, &#22240;&#27492;&#24212;&#29992;&#31243;&#24207;&#36890;&#24120;&#19981;&#38656;&#35201;&#20851;&#24515;&#36825;&#20010;(&#20107;&#23454;&#19978;,&#36879;&#26126;&#30340;&#24310;&#36831;&#21152;&#36733;&#20063;&#23601;&#26159;&#20026;&#20160;&#20040;Hibernate&#38656;&#35201;&#33258;&#24049;&#30340;&#38598;&#21512;&#23454;&#29616;&#30340;&#20027;&#35201;&#21407;&#22240;)&#12290;&#20294;&#26159;, &#22914;&#20309;&#24212;&#29992;&#31243;&#24207;&#35797;&#22270;&#25191;&#34892;&#20197;&#19979;&#31243;&#24207;:            </p><pre class="programlisting">s = sessions.openSession();User u = (User) s.find("from User u where u.name=?", userName, Hibernate.STRING).get(0);Map permissions = u.getPermissions();s.connection().commit();s.close();Integer accessLevel = (Integer) permissions.get("accounts");  // Error!</pre><p>                &#36825;&#20010;&#38169;&#35823;&#21487;&#33021;&#20196;&#20320;&#24863;&#21040;&#24847;&#22806;&#12290;&#22240;&#20026;&#22312;&#36825;&#20010;<tt class="literal">Session</tt>&#34987;&#25552;&#20132;(commit)&#20043;&#21069;, permissions&#27809;&#26377;&#34987;&#21021;&#22987;&#21270;,&#37027;&#20040;&#36825;&#20010;&#38598;&#21512;&#23558;&#27704;&#36828;&#19981;&#33021;&#36733;&#20837;&#20182;&#30340;&#25968;&#25454;&#20102;&#12290; &#35299;&#20915;&#26041;&#27861;&#26159;&#25226;&#35835;&#21462;&#38598;&#21512;&#25968;&#25454;&#30340;&#35821;&#21477;&#25552;&#21040;Session&#34987;&#25552;&#20132;&#20043;&#21069;&#12290;            </p><p>                &#21478;&#22806;&#19968;&#31181;&#36873;&#25321;&#26159;&#19981;&#20351;&#29992;&#24310;&#36831;&#21021;&#22987;&#21270;&#38598;&#21512;&#12290;&#26082;&#28982;&#24310;&#36831;&#21021;&#22987;&#21270;&#21487;&#33021;&#24341;&#36215;&#19978;&#38754;&#36825;&#26679;&#38169;&#35823;,&#40664;&#35748;&#26159;&#19981;&#20351;&#29992;&#24310;&#36831;&#21021;&#22987;&#21270;&#30340;&#12290;&#20294;&#26159;, &#20026;&#20102;&#25928;&#29575;&#30340;&#21407;&#22240;, &#25105;&#20204;&#24076;&#26395;&#23545;&#32477;&#22823;&#22810;&#25968;&#38598;&#21512;(&#29305;&#21035;&#26159;&#23454;&#20307;&#38598;&#21512;)&#20351;&#29992;&#24310;&#36831;&#21021;&#22987;&#21270;&#12290;            </p><p>                &#24310;&#36831;&#21021;&#22987;&#21270;&#38598;&#21512;&#26102;&#21457;&#29983;&#30340;&#20363;&#22806;&#34987;&#23553;&#35013;&#22312;<tt class="literal">LazyInitializationException</tt>&#20013;&#12290;            </p><p>                &#20351;&#29992;&#21487;&#36873;&#30340; <tt class="literal">lazy</tt> &#23646;&#24615;&#26469;&#23450;&#20041;&#24310;&#36831;&#21021;&#22987;&#21270;&#38598;&#21512;&#65306;            </p><pre class="programlisting">&lt;set name="names" table="NAMES" lazy="true"&gt;    &lt;key column="group_id"/&gt;    &lt;element column="NAME" type="string"/&gt;&lt;/set&gt;</pre><p>                &#22312;&#19968;&#20123;&#24212;&#29992;&#31243;&#24207;&#30340;&#20307;&#31995;&#32467;&#26500;&#20013;,&#29305;&#21035;&#26159;&#20351;&#29992;hibernate&#35775;&#38382;&#25968;&#25454;&#30340;&#32467;&#26500;, &#20195;&#30721;&#21487;&#33021;&#20250;&#29992;&#22312;&#19981;&#29992;&#30340;&#24212;&#29992;&#23618;&#20013;, &#21487;&#33021;&#27809;&#26377;&#21150;&#27861;&#20445;&#35777;&#24403;&#19968;&#20010;&#38598;&#21512;&#22312;&#21021;&#22987;&#21270;&#30340;&#26102;&#20505;, session&#20173;&#28982;&#25171;&#24320;&#30528;&#12290; &#36825;&#37324;&#26377;&#20004;&#20010;&#22522;&#26412;&#26041;&#27861;&#26469;&#35299;&#20915;&#36825;&#20010;&#38382;&#39064;&#65306;            </p><div class="itemizedlist"><ul type="disc"><li><p>                        &#22312;&#22522;&#20110;Web&#30340;&#24212;&#29992;&#31243;&#24207;&#20013;, &#19968;&#20010;servlet&#36807;&#28388;&#22120;&#21487;&#20197;&#29992;&#26469;&#22312;&#29992;&#25143;&#35831;&#27714;&#30340;&#23436;&#25104;&#20043;&#21069;&#26469;&#20851;&#38381;<tt class="literal">Session</tt>&#12290;&#24403;&#28982;,&#36825;&#20010;&#22320;&#26041;(&#20851;&#38381;session)&#20005;&#37325;&#20381;&#36182;&#20110;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#32467;&#26500;&#20013;&#20363;&#22806;&#22788;&#29702;&#30340;&#27491;&#30830;&#24615;&#12290;&#22312;&#35831;&#27714;&#36820;&#22238;&#32473;&#29992;&#25143;&#20043;&#21069;&#20851;&#38381;<tt class="literal">Session</tt>&#21644;&#32467;&#26463;&#20107;&#21153;&#26159;&#38750;&#24120;&#37325;&#35201;&#30340;,&#21363;&#20351;&#26159;&#22312;&#26500;&#24314;&#35270;&#22270;(&#35793;&#32773;&#27880;: &#36820;&#22238;&#32473;&#29992;&#25143;&#30340;HTML&#39029;&#38754;)&#30340;&#26102;&#20505;&#21457;&#29983;&#20102;&#20363;&#22806;,&#20063;&#24517;&#39035;&#30830;&#20445;&#36825;&#19968;&#28857;&#12290;&#32771;&#34385;&#21040;&#36825;&#19968;&#28857;&#65292;servlet&#36807;&#28388;&#22120;&#21487;&#20197;&#20445;&#35777;&#33021;&#22815;&#25805;&#20316;&#36825;&#20010;<tt class="literal">Session</tt>&#12290;&#25105;&#20204;&#25512;&#33616;&#20351;&#29992;&#19968;&#20010;<tt class="literal">ThreadLocal</tt>&#21464;&#37327;&#26469;&#20445;&#23384;&#24403;&#21069;&#30340;<tt class="literal">Session</tt>&#12290;                    </p></li><li><p>                        &#22312;&#19968;&#20010;&#26377;&#21333;&#29420;&#30340;&#21830;&#19994;&#23618;&#30340;&#24212;&#29992;&#31243;&#24207;&#20013;, &#21830;&#19994;&#36923;&#36753;&#24517;&#39035;&#22312;&#36820;&#22238;&#20043;&#21069;&#8220;&#20934;&#22791;&#22909;&#8221;Web&#23618;&#25152;&#38656;&#35201;&#30340;&#25152;&#26377;&#38598;&#21512;&#12290;&#36890;&#24120;, &#24212;&#29992;&#31243;&#24207;&#20026;&#27599;&#20010;Web&#23618;&#38656;&#35201;&#30340;&#38598;&#21512;&#35843;&#29992;<tt class="literal">Hibernate.initialize()</tt>(&#24517;&#39035;&#22312;Session&#34987;&#20851;&#38381;&#20043;&#21069;&#35843;&#29992;)&#25110;&#32773;&#36890;&#36807;&#20351;&#29992;<tt class="literal">FETCH</tt>&#23376;&#21477;&#26469;&#26126;&#30830;&#33719;&#21462;&#21040;&#25972;&#20010;&#38598;&#21512;&#12290;                    </p></li></ul></div><p>                &#20320;&#21487;&#20197;&#20351;&#29992;Hibernate Session API&#20013;&#30340;<tt class="literal">filter()</tt> &#26041;&#27861;&#26469;&#22312;&#21021;&#22987;&#21270;&#20043;&#21069;&#24471;&#21040;&#38598;&#21512;&#30340;&#22823;&#23567;&#65306;            </p><pre class="programlisting">( (Integer) s.filter( collection, "select count(*)" ).get(0) ).intValue()</pre><p>                <tt class="literal">filter()</tt> &#25110;&#32773; <tt class="literal">createFilter()</tt>&#21516;&#26679;&#34987;&#29992;&#20110;&#26377;&#25928;&#30340;&#37325;&#26032;&#36733;&#20837;&#19968;&#20010;&#38598;&#21512;&#30340;&#23376;&#38598;&#32780;&#19981;&#38656;&#35201;&#36733;&#20837;&#25972;&#20010;&#38598;&#21512;&#12290;            </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-s1-8a"></a>6.6.&nbsp;&#38598;&#21512;&#25490;&#24207;&#65288;Sorted Collections&#65289;</h2></div></div><div></div></div><p>                Hibernate&#25903;&#25345;&#23454;&#29616;<tt class="literal">java.util.SortedMap</tt>&#21644;<tt class="literal">java.util.SortedSet</tt>&#30340;&#38598;&#21512;&#12290;&#20320;&#24517;&#39035;&#22312;&#26144;&#23556;&#25991;&#20214;&#20013;&#25351;&#23450;&#19968;&#20010;&#27604;&#36739;&#22120;&#65306;            </p><pre class="programlisting">&lt;set name="aliases" table="person_aliases" sort="natural"&gt;    &lt;key column="person"/&gt;    &lt;element column="name" type="string"/&gt;&lt;/set&gt;&lt;map name="holidays" sort="my.custom.HolidayComparator" lazy="true"&gt;    &lt;key column="year_id"/&gt;    &lt;index column="hol_name" type="string"/&gt;    &lt;element column="hol_date type="date"/&gt;&lt;/map&gt;</pre><p>

⌨️ 快捷键说明

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