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

📄 tutorial.html

📁 是一个中文的Hibernate库文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
        } catch (Throwable ex) {            // Make sure you log the exception, as it might be swallowed            System.err.println("Initial SessionFactory creation failed." + ex);            throw new ExceptionInInitializerError(ex);        }    }    public static final ThreadLocal session = new ThreadLocal();    public static Session currentSession() throws HibernateException {        Session s = (Session) session.get();        // Open a new Session, if this thread has none yet        if (s == null) {            s = sessionFactory.openSession();            // Store it in the ThreadLocal variable            session.set(s);        }        return s;    }    public static void closeSession() throws HibernateException {        Session s = (Session) session.get();        if (s != null)            s.close();        session.set(null);    }}</pre><p>		&#36825;&#20010;&#31867;&#19981;&#20165;&#20165;&#22312;&#23427;&#30340;&#38745;&#24577;&#21021;&#22987;&#21270;&#36807;&#31243;&#65288;&#20165;&#24403;&#21152;&#36733;&#36825;&#20010;&#31867;&#30340;&#26102;&#20505;&#34987;JVM&#25191;&#34892;&#19968;&#27425;&#65289;&#20013;&#20135;&#29983;&#20840;&#23616;<tt class="literal">SessionFactory</tt>&#65292;		&#21516;&#26102;&#20063;&#26377;&#19968;&#20010;<tt class="literal">ThreadLocal</tt>&#21464;&#37327;&#26469;&#20026;&#24403;&#21069;&#32447;&#31243;&#20445;&#23384;<tt class="literal">Session</tt>&#12290;&#19981;&#35770;&#20320;&#20309;&#26102;		&#35843;&#29992;<tt class="literal">HibernateUtil.currentSession()</tt>&#65292;&#23427;&#24635;&#26159;&#36820;&#22238;&#21516;&#19968;&#20010;&#32447;&#31243;&#20013;&#30340;&#21516;&#19968;&#20010;Hibernate&#21333;&#20803;&#25805;&#20316;&#12290;		&#32780;&#19968;&#20010;<tt class="literal">HibernateUtil.closeSession()</tt>&#35843;&#29992;&#23558;&#32456;&#27490;&#24403;&#21069;&#32447;&#31243;&#30456;&#32852;&#31995;&#30340;&#37027;&#20010;&#21333;&#20803;&#25805;&#20316;&#12290;            </p><p>		&#22312;&#20320;&#20351;&#29992;&#36825;&#20010;&#24110;&#21161;&#31867;&#20043;&#21069;&#65292;&#30830;&#23450;&#20320;&#26126;&#30333;Java&#20851;&#20110;&#26412;&#22320;&#32447;&#31243;&#21464;&#37327;&#65288;thread-local variable&#65289;&#30340;&#27010;&#24565;&#12290;&#19968;&#20010;&#21151;&#33021;&#26356;&#21152;&#24378;&#22823;&#30340;		<tt class="literal">HibernateUtil</tt>&#24110;&#21161;&#31867;&#21487;&#20197;&#22312;<tt class="literal">CaveatEmptor</tt>http://caveatemptor.hibernate.org/&#25214;&#21040;		&#65293;&#23427;&#21516;&#26102;&#20063;&#20986;&#29616;&#22312;&#20070;&#65306;&#12298;Hibernate in Action&#12299;&#20013;&#12290;&#27880;&#24847;&#24403;&#20320;&#25226;Hibernate&#37096;&#32626;&#22312;&#19968;&#20010;J2EE&#24212;&#29992;&#26381;&#21153;&#22120;&#19978;&#30340;&#26102;&#20505;&#65292;&#36825;&#20010;&#31867;&#19981;&#26159;&#24517;&#39035;&#30340;&#65306;		&#19968;&#20010;<tt class="literal">Session</tt>&#20250;&#33258;&#21160;&#32465;&#23450;&#21040;&#24403;&#21069;&#30340;JTA&#20107;&#29289;&#19978;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;JNDI&#26469;&#26597;&#25214;<tt class="literal">SessionFactory</tt>&#12290;		&#22914;&#26524;&#20320;&#20351;&#29992;JBoss AS&#65292;Hibernate&#21487;&#20197;&#34987;&#37096;&#32626;&#25104;&#19968;&#20010;&#21463;&#31649;&#29702;&#30340;&#31995;&#32479;&#26381;&#21153;&#65288;system service&#65289;&#24182;&#33258;&#21160;&#32465;&#23450;<tt class="literal">SessionFactory</tt>&#21040;JNDI&#19978;&#12290;            </p><p>                &#25226;<tt class="literal">HibernateUtil.java</tt>&#25918;&#22312;&#24320;&#21457;&#30446;&#24405;&#30340;&#28304;&#20195;&#30721;&#36335;&#24452;&#19979;&#38754;&#65292;&#19982;                <tt class="literal">Event.java</tt>&#25918;&#22312;&#19968;&#36215;&#65306;            </p><pre class="programlisting">.+lib  &lt;Hibernate and third-party libraries&gt;+src  Event.java  Event.hbm.xml  HibernateUtil.java  hibernate.cfg.xml+databuild.xml</pre><p>		&#20877;&#27425;&#32534;&#35793;&#36825;&#20010;&#31243;&#24207;&#19981;&#24212;&#35813;&#26377;&#38382;&#39064;&#12290;&#26368;&#21518;&#25105;&#20204;&#38656;&#35201;&#37197;&#32622;&#19968;&#20010;&#26085;&#24535;&#31995;&#32479; &#65293; Hibernate&#20351;&#29992;&#36890;&#29992;&#26085;&#24535;&#25509;&#21475;&#65292;&#36825;&#20801;&#35768;&#20320;&#22312;Log4j&#21644;		JDK 1.4 logging&#20043;&#38388;&#36827;&#34892;&#36873;&#25321;&#12290;&#22810;&#25968;&#24320;&#21457;&#32773;&#21916;&#27426;Log4j&#65306;&#20174;Hibernate&#30340;&#20998;&#21457;&#29256;&#65288;&#23427;&#22312;<tt class="literal">etc/</tt>&#30446;&#24405;&#19979;&#65289;&#25335;&#36125;		<tt class="literal">log4j.properties</tt>&#21040;&#20320;&#30340;<tt class="literal">src</tt>&#30446;&#24405;&#65292;&#19982;<tt class="literal">hibernate.cfg.xml</tt>.&#25918;&#22312;&#19968;&#36215;&#12290;		&#30475;&#19968;&#30524;&#37197;&#32622;&#31034;&#20363;&#65292;&#20320;&#21487;&#20197;&#20462;&#25913;&#37197;&#32622;&#22914;&#26524;&#20320;&#24076;&#26395;&#30475;&#21040;&#26356;&#22810;&#30340;&#36755;&#20986;&#20449;&#24687;&#12290;&#32570;&#30465;&#24773;&#20917;&#19979;&#65292;&#21482;&#26377;Hibernate&#30340;&#21551;&#21160;&#20449;&#24687;&#20250;&#26174;&#31034;&#22312;&#26631;&#20934;&#36755;&#20986;&#19978;&#12290;            </p><p>		&#25945;&#31243;&#30340;&#22522;&#26412;&#26694;&#26550;&#23436;&#25104;&#20102; &#65293; &#29616;&#22312;&#25105;&#20204;&#21487;&#20197;&#29992;Hibernate&#26469;&#20570;&#20123;&#30495;&#27491;&#30340;&#24037;&#20316;&#12290;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="tutorial-firstapp-workingpersistence"></a>2.2.6.&nbsp;		&#21152;&#36733;&#24182;&#23384;&#20648;&#23545;&#35937;		</h3></div></div><div></div></div><p>		&#32456;&#20110;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;Hibernate&#26469;&#21152;&#36733;&#21644;&#23384;&#20648;&#23545;&#35937;&#20102;&#12290;&#25105;&#20204;&#32534;&#20889;&#19968;&#20010;&#24102;&#26377;<tt class="literal">main()</tt>&#26041;&#27861;		&#30340;<tt class="literal">EventManager</tt>&#31867;&#65306;            </p><pre class="programlisting">import org.hibernate.Transaction;import org.hibernate.Session;import java.util.Date;public class EventManager {    public static void main(String[] args) {        EventManager mgr = new EventManager();        if (args[0].equals("store")) {            mgr.createAndStoreEvent("My Event", new Date());        }        HibernateUtil.sessionFactory.close();    }}</pre><p>		&#25105;&#20204;&#20174;&#21629;&#20196;&#34892;&#35835;&#20837;&#19968;&#20123;&#21442;&#25968;&#65292;&#22914;&#26524;&#31532;&#19968;&#20010;&#21442;&#25968;&#26159;"store"&#65292;&#25105;&#20204;&#21019;&#24314;&#24182;&#20648;&#23384;&#19968;&#20010;&#26032;&#30340;Event&#65306;            </p><pre class="programlisting">private void createAndStoreEvent(String title, Date theDate) {    Session session = HibernateUtil.currentSession();    Transaction tx = session.beginTransaction();    Event theEvent = new Event();    theEvent.setTitle(title);    theEvent.setDate(theDate);    session.save(theEvent);    tx.commit();    HibernateUtil.closeSession();}</pre><p>		&#25105;&#20204;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;<tt class="literal">Event</tt>&#23545;&#35937;&#24182;&#25226;&#23427;&#20256;&#36882;&#32473;Hibernate&#12290;Hibernate&#29616;&#22312;&#36127;&#36131;&#21019;&#24314;SQL&#24182;&#25226;		<tt class="literal">INSERT</tt>&#21629;&#20196;&#20256;&#32473;&#25968;&#25454;&#24211;&#12290;&#22312;&#36816;&#34892;&#23427;&#20043;&#21069;&#65292;&#35753;&#25105;&#20204;&#33457;&#19968;&#28857;&#26102;&#38388;&#22312;<tt class="literal">Session</tt>&#21644;<tt class="literal">Transaction</tt>&#30340;&#22788;&#29702;&#20195;&#30721;&#19978;&#12290;		            </p><p>		&#27599;&#20010;<tt class="literal">Session</tt>&#26159;&#19968;&#20010;&#29420;&#31435;&#30340;&#21333;&#20803;&#25805;&#20316;&#12290;&#20320;&#20250;&#23545;&#25105;&#20204;&#26377;&#21478;&#22806;&#19968;&#20010;API&#65306;<tt class="literal">Transaction</tt>&#32780;&#24863;&#21040;&#24778;&#22855;&#12290;		&#36825;&#26263;&#31034;&#19968;&#20010;&#21333;&#20803;&#25805;&#20316;&#21487;&#20197;&#25317;&#26377;&#27604;&#19968;&#20010;&#21333;&#29420;&#30340;&#25968;&#25454;&#24211;&#20107;&#21153;&#26356;&#38271;&#30340;&#29983;&#21629;&#21608;&#26399; &#65293; &#24819;&#20687;&#22312;web&#24212;&#29992;&#31243;&#24207;&#20013;&#65292;&#19968;&#20010;&#21333;&#20803;&#25805;&#20316;&#36328;&#36234;&#22810;&#20010;Http request/response&#24490;&#29615;		&#65288;&#20363;&#22914;&#19968;&#20010;&#21019;&#24314;&#23545;&#35805;&#26694;&#65289;&#12290;&#26681;&#25454;&#8220;&#24212;&#29992;&#31243;&#24207;&#29992;&#25143;&#30524;&#20013;&#30340;&#21333;&#20803;&#25805;&#20316;&#8221;&#26469;&#20999;&#21106;&#20107;&#21153;&#26159;Hibernate&#30340;&#22522;&#26412;&#35774;&#35745;&#24605;&#24819;&#20043;&#19968;&#12290;&#25105;&#20204;&#35843;&#29992;		&#19968;&#20010;&#38271;&#29983;&#21629;&#26399;&#30340;&#21333;&#20803;&#25805;&#20316;<span class="emphasis"><em>Application Transaction</em></span>&#26102;&#65292;&#36890;&#24120;&#21253;&#35013;&#20960;&#20010;&#26356;&#29983;&#21629;&#26399;&#36739;&#30701;&#30340;&#25968;&#25454;&#24211;&#20107;&#21153;&#12290;		&#20026;&#20102;&#31616;&#21270;&#38382;&#39064;&#65292;&#22312;&#36825;&#20010;&#25945;&#31243;&#37324;&#25105;&#20204;&#20351;&#29992;<tt class="literal">Session</tt>&#21644;<tt class="literal">Transaction</tt>&#20043;&#38388;&#26159;1&#23545;1&#20851;&#31995;&#30340;&#31890;&#24230;&#65288;one-to-one granularity&#65289;&#12290;            </p><p>                <tt class="literal">Transaction.begin()</tt>&#21644;<tt class="literal">commit()</tt>&#37117;&#20570;&#20123;&#20160;&#20040;&#65311;<tt class="literal">rollback()</tt>&#22312;&#21738;&#20123;&#24773;&#20917;&#19979;&#20250;&#20135;&#29983;&#38169;&#35823;&#65311;                Hibernate&#30340;<tt class="literal">Transaction</tt> API &#23454;&#38469;&#19978;&#26159;&#21487;&#36873;&#30340;, &#20294;&#26159;&#25105;&#20204;&#36890;&#24120;&#20250;&#20026;&#20102;&#20415;&#21033;&#24615;&#21644;&#21487;&#31227;&#26893;&#24615;&#32780;&#20351;&#29992;&#23427;&#12290;		  &#22914;&#26524;&#20320;&#23425;&#21487;&#33258;&#24049;&#22788;&#29702;&#25968;&#25454;&#24211;&#20107;&#21153;&#65288;&#20363;&#22914;&#65292;&#35843;&#29992;<tt class="literal">session.connection.commit()</tt>)&#65292;&#36890;&#36807;&#30452;&#25509;&#21644;&#26080;&#31649;&#29702;&#30340;JDBC&#65292;&#36825;&#26679;&#23558;&#25226;&#20195;&#30721;&#32465;&#23450;&#21040;&#19968;&#20010;&#29305;&#23450;&#30340;&#37096;&#32626;&#29615;&#22659;&#20013;&#21435;&#12290;		  &#36890;&#36807;&#22312;Hibernate&#37197;&#32622;&#20013;&#35774;&#32622;<tt class="literal">Transaction</tt>&#24037;&#21378;&#65292;&#20320;&#21487;&#20197;&#25226;&#20320;&#30340;&#25345;&#20037;&#21270;&#23618;&#37096;&#32626;&#22312;&#20219;&#20309;&#22320;&#26041;&#12290;                &#26597;&#30475;<a href="transactions.html" title="&#31532;&nbsp;12&nbsp;&#31456;&nbsp;&#20107;&#21153;&#21644;&#24182;&#21457;">&#31532;&nbsp;12&nbsp;&#31456; <i>&#20107;&#21153;&#21644;&#24182;&#21457;</i></a>&#20102;&#35299;&#26356;&#22810;&#20851;&#20110;&#20107;&#21153;&#22788;&#29702;&#21644;&#21010;&#20998;&#30340;&#20449;&#24687;&#12290;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#25105;&#20204;&#20063;&#24573;&#30053;&#20219;&#20309;&#24322;&#24120;&#22788;&#29702;&#21644;&#20107;&#21153;&#22238;&#28378;&#12290;            </p><p>		&#20026;&#20102;&#31532;&#19968;&#27425;&#36816;&#34892;&#25105;&#20204;&#30340;&#24212;&#29992;&#31243;&#24207;&#65292;&#25105;&#20204;&#24517;&#39035;&#22686;&#21152;&#19968;&#20010;&#21487;&#20197;&#35843;&#29992;&#30340;target&#21040;Ant&#30340;build&#25991;&#20214;&#20013;&#12290;            </p><pre class="programlisting">&lt;target name="run" depends="compile"&gt;     &lt;java fork="true" classname="EventManager" classpathref="libraries"&gt;        &lt;classpath path="${targetdir}"/&gt;        &lt;arg value="${action}"/&gt;    &lt;/java&gt;&lt;/target&gt;</pre><p>                <tt class="literal">action</tt>&#21442;&#25968;&#30340;&#20540;&#26159;&#22312;&#36890;&#36807;&#21629;&#20196;&#34892;&#35843;&#29992;&#36825;&#20010;target&#30340;&#26102;&#20505;&#35774;&#32622;&#30340;:            </p><pre class="programlisting">C:\hibernateTutorial\&gt;ant run -Daction=store</pre><p>		&#20320;&#24212;&#35813;&#20250;&#30475;&#21040;&#65292;&#32534;&#35793;&#32467;&#26463;&#20197;&#21518;&#65292;Hibernate&#26681;&#25454;&#20320;&#30340;&#37197;&#32622;&#21551;&#21160;&#65292;&#24182;&#20135;&#29983;&#19968;&#22823;&#22534;&#30340;&#36755;&#20986;&#26085;&#24535;&#12290;&#22312;&#26085;&#24535;&#26368;&#21518;&#20320;&#20250;&#30475;&#21040;&#19979;&#38754;&#36825;&#34892;&#65306;            </p><pre class="programlisting">[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)</pre><p>

⌨️ 快捷键说明

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