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

📄 collections.html

📁 图象处理
💻 HTML
📖 第 1 页 / 共 5 页
字号:
                <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;&#21442;&#38405;&#26412;&#31456;&#21518;&#38754;&#20851;&#20110;&#21452;&#21521;&#20851;&#32852;&#30340;&#35752;&#35770;&#12290;            </p></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-lazy"></a>6.5.&nbsp;&#24310;&#36831;&#21021;&#22987;&#21270;(&#24310;&#36831;&#21152;&#36733;)&#65288;Lazy Initialization&#65289;</h2></div></div><div></div></div><p><a name="collections-lazy-translate-comment-zh-cn"></a>			(&#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;(&#28982;&#32780;&#65292;&#36824;&#26377;&#19968;&#31181;&#26356;&#20808;&#36827;&#30340;&#26041;&#27861;&#26469;&#35299;&#20915;&#36825;&#20010;&#38382;&#39064;&#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;&#65288;&#21442;&#38405;&#31532;&#19968;&#31456;&#65292;<a href="quickstart.html#quickstart-playingwithcats" title="1.4.&nbsp;&#19982;&#29483;&#21516;&#20048;">&#31532;&nbsp;1.4&nbsp;&#33410; &#8220;&#19982;&#29483;&#21516;&#20048;&#8221;</a>,&#26377;&#19968;&#20010;&#21442;&#32771;&#23454;&#29616;&#12290;&#65289;                    </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;&#36825;&#23601;&#26159;&#35828;&#21830;&#19994;&#36923;&#36753;&#23618;&#24212;&#35813;&#35013;&#36733;&#22909;&#25152;&#26377;&#30340;&#25968;&#25454;&#65292;&#25226;&#19968;&#20010;&#29992;&#20363;&#25152;&#38656;&#35201;&#30340;&#25152;&#26377;&#25968;&#25454;&#37117;&#21021;&#22987;&#21270;&#22909;&#65292;&#20256;&#36882;&#32473;&#34920;&#29616;/web&#23618;&#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;Hibernate &#26597;&#35810;&#65292;&#29992;<tt class="literal">FETCH</tt>&#23376;&#21477;&#26469;&#26126;&#30830;&#33719;&#21462;&#21040;&#25972;&#20010;&#38598;&#21512;&#12290;                    </p></li><li><p>                    You may also attach a previously loaded object to a new <tt class="literal">Session</tt>                    with <tt class="literal">update()</tt> or <tt class="literal">lock()</tt> before                    accessing unitialized collections (or other proxies). Hibernate can not                    do this automatically, as it would introduce ad hoc transaction semantics!                    &#20320;&#20063;&#21487;&#20197;&#25226;&#20808;&#21069;&#35013;&#36733;&#30340;&#23545;&#35937;&#38468;&#21152;&#21040;&#19968;&#20010;&#26032;&#30340;<tt class="literal">Session</tt>&#21435;&#65292;&#38656;&#35201;&#22312;&#35775;&#38382;&#26410;&#21021;&#22987;&#21270;&#30340;&#38598;&#21512;&#31867;&#65288;&#25110;&#20854;&#20182;&#20195;&#29702;&#65289;&#21069;&#20351;&#29992;<tt class="literal">update()</tt> &#25110; <tt class="literal">lock()</tt>&#12290;Hibernate&#19981;&#33021;&#33258;&#21160;&#20570;&#36825;&#20214;&#20107;&#65292;&#36825;&#22238;&#24102;&#26469;&#29305;&#21035;&#30340;&#20107;&#21153;&#35821;&#20041;&#65281;                </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="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="collections-sorted"></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>                <tt class="literal">sort</tt>&#23646;&#24615;&#20013;&#20801;&#35768;&#30340;&#20540;&#21253;&#25324;<tt class="literal">unsorted</tt>,<tt class="literal">natural</tt>&#21644;&#26576;&#20010;&#23454;&#29616;&#20102;<tt class="literal">java.util.Comparator</tt>&#30340;&#31867;&#30340;&#21517;&#31216;&#12290;            </p><p>                &#20998;&#31867;&#38598;&#21512;&#30340;&#34892;&#20026;&#20107;&#23454;&#19978;&#35937;<tt class="literal">java.util.TreeSet</tt>&#25110;&#32773;<tt class="literal">java.util.TreeMap</tt>&#12290;            </p><p>                &#22914;&#26524;&#20320;&#24076;&#26395;&#25968;&#25454;&#24211;&#33258;&#24049;&#23545;&#38598;&#21512;&#20803;&#32032;&#25490;&#24207;&#65292;&#21487;&#20197;&#21033;&#29992;<tt class="literal">set</tt>,<tt class="literal">bag</tt>&#25110;&#32773;<tt class="literal">map</tt>&#26144;&#23556;&#20013;&#30340;<tt class="literal">order-by</tt>&#23646;&#24615;&#12290;&#36825;&#20010;&#35299;&#20915;&#26041;&#26696;&#21482;&#33021;&#22312;jdk1.4&#25110;&#32773;&#26356;&#39640;&#30340;jdk&#29256;&#26412;&#20013;&#25165;&#21487;&#20197;&#23454;&#29616;(&#36890;&#36807;LinkedHashSet&#25110;&#32773;LinkedHashMap&#23454;&#29616;)&#12290; &#23427;&#26159;&#22312;SQL&#26597;&#35810;&#20013;&#23436;&#25104;&#25490;&#24207;&#65292;&#32780;&#19981;&#26159;&#22312;&#20869;&#23384;&#20013;&#12290;            </p><pre class="programlisting">&lt;set name="aliases" table="person_aliases" order-by="name asc"&gt;    &lt;key column="person"/&gt;    &lt;element column="name" type="string"/&gt;&lt;/set&gt;&lt;map name="holidays" order-by="hol_date, hol_name" 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>                &#27880;&#24847;: &#36825;&#20010;<tt class="literal">order-by</tt>&#23646;&#24615;&#30340;&#20540;&#26159;&#19968;&#20010;SQL&#25490;&#24207;&#23376;&#21477;&#32780;&#19981;&#26159;HQL&#30340;&#65281;

⌨️ 快捷键说明

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