锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清毛片一区二区,久久亚洲精品中文字幕,国产亚洲情侣久久精品http://m.tkk7.com/keweibo/category/25071.html涓涓? Java 澶氳兘 Delphi,Powerbuilder ... zh-cnThu, 14 Jul 2011 14:00:20 GMTThu, 14 Jul 2011 14:00:20 GMT60struts2+spring+hibernate 鎳掑姞杞藉紓甯革細org.hibernate.LazyInitializationException: failed to lazily initializehttp://m.tkk7.com/keweibo/articles/354252.htmlKeKeWed, 13 Jul 2011 05:55:00 GMThttp://m.tkk7.com/keweibo/articles/354252.htmlhttp://m.tkk7.com/keweibo/comments/354252.htmlhttp://m.tkk7.com/keweibo/articles/354252.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/354252.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/354252.html涓ょ澶勭悊鏂規硶錛?br />涓銆佸湪鏄犲皠鏂囦歡涓緗甽azy=false銆?br />浜屻佺敤OpenSessionInViewFilter榪囨護鍣紝娉ㄦ剰hibernateFilter榪囨護鍣ㄥ拰struts2榪囨護鍣ㄥ湪鏄犲皠鏃剁殑鍏堝悗欏哄簭銆傚悓鏃惰閰嶇疆浜嬬墿澶勭悊錛屽惁鍒欎細瀵艱嚧session澶勪簬鍙鐘舵佽屼笉鑳藉仛淇敼銆佸垹闄ょ殑鍔ㄤ綔銆?br />鍗沖湪web.xml鏂囦歡涓涓嬮厤緗細
<!-- OpenSessionInView -->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
        
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


Ke 2011-07-13 13:55 鍙戣〃璇勮
]]>
Oracle 鏁版嵁搴揌ibernate 淇濆瓨甯︽湁鏃跺垎縐掔殑鏃ユ湡綾誨瀷http://m.tkk7.com/keweibo/articles/354166.htmlKeKeTue, 12 Jul 2011 06:50:00 GMThttp://m.tkk7.com/keweibo/articles/354166.htmlhttp://m.tkk7.com/keweibo/comments/354166.htmlhttp://m.tkk7.com/keweibo/articles/354166.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/354166.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/354166.htmlOracle鏁版嵁搴撳搴旇〃鐨凜olumn綾誨瀷涓篋ate
Java綾諱腑瀛楁鐨勭被鍨嬩負 java.util.Date

<property name="createdDate" type="timestamp" >
            <column name="CREATED_DATE" />
</property>

鏄犲皠鏂囦歡涓璸roperty鍏冪礌鐨則ype灞炴у間負 timestamp .

Ke 2011-07-12 14:50 鍙戣〃璇勮
]]>
hibernate 鏄犲皠鑷韓涓瀵瑰鍙岀浉鍏寵仈http://m.tkk7.com/keweibo/articles/353875.htmlKeKeThu, 07 Jul 2011 07:35:00 GMThttp://m.tkk7.com/keweibo/articles/353875.htmlhttp://m.tkk7.com/keweibo/comments/353875.htmlhttp://m.tkk7.com/keweibo/articles/353875.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/353875.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/353875.html鏄犲皠鏂囦歡
<hibernate-mapping>
    <class name="org.gecs.hibernate.test.AdDepartment" table="AD_DEPARTMENT" schema="BARCODE"
           dynamic-insert="true" dynamic-update="true">
        <id name="adDepartmentId" type="long">
            <column name="AD_DEPARTMENT_ID" precision="22" scale="0" />
            <generator class="sequence">
                <param name="sequence">AD_DEPARTMENT_SEQ</param>
            </generator>
        </id>
        <property name="departmentName" type="string">
            <column name="DEPARTMENT_NAME" length="50" not-null="true" />
        </property>
        <property name="active" type="java.lang.Character" insert="false" update="true">
            <column name="ACTIVE" length="1" />
        </property>
        <property name="createdTime" type="date" insert="false" update="false">
            <column name="CREATED_TIME" length="7" />
        </property>
        <property name="createdUser" type="string">
            <column name="CREATED_USER" length="20" not-null="true" />
        </property>
        
        <many-to-one name="parentDepartment" column="PARENT_DEPARTMENT_ID"/>
        
        <set name="childDepartment" cascade="save-update" lazy="true" inverse="true">
            <key column="PARENT_DEPARTMENT_ID"/>
            <one-to-many class="org.gecs.hibernate.test.AdDepartment"/>
        </set>

    </class>
</hibernate-mapping>

琛ㄧ粨鏋勶細
嫻嬭瘯浠g爜錛?/span>
public void testSave() {
        AdDepartment department = new AdDepartment();
        department.setDepartmentName("鑿崡璩囪▕铏?);
        department.setCreatedUser("bob");
        
        AdDepartment child_department = new AdDepartment();
        child_department.setDepartmentName("PCBA鎳夌敤緋葷當閮?);
        child_department.setCreatedUser("bob");
        child_department.setParentDepartment(department);
        //
        department.getChildDepartment().add(child_department);
        
        Transaction tran = session.beginTransaction();
        session.save(department);
        //session.save(child_department);
        tran.commit();
    }

鏁堟灉錛?/span>


Ke 2011-07-07 15:35 鍙戣〃璇勮
]]>
hibernate 鏄犲皠鏂囦歡閰嶇疆榛樿鍊兼柟娉?/title><link>http://m.tkk7.com/keweibo/articles/353872.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 07 Jul 2011 06:55:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/353872.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/353872.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/353872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/353872.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/353872.html</trackback:ping><description><![CDATA[<div><p>閫氳繃璁劇疆hibernate鏄犲皠鏂囦歡鐨刢lass澶?dynamic-insert="true" dynamic-update="true" 鍜宲roperty 閲岄潰鐨刬nsert="false" update="false" 瀹炵幇 .<br /></p> <p>涓ゅ閮借閰嶇疆錛?/p> <p><property></property>鏍囩灞炴э細update=”true|false”</p> <p>濡傛灉璁劇疆涓篺alse,鍒欏湪hibernate鐨剈pdate璇彞閲岄潰娌℃湁<property>鏍囩鎵鎸囨槑鐨勫睘鎬ф墍瀵瑰簲鐨勫瓧孌點?/p> <p>鍚岀悊錛宨nsert=”true|false”</p> <p>濡傛灉璁劇疆涓篺alse,鍒欏湪hibernate鐨刬nsert璇彞閲岄潰娌℃湁<property>鏍囩鎵鎸囨槑鐨勫睘鎬ф墍瀵瑰簲鐨勫瓧孌點?/p> <p>榪欐牱鐨勫紛绔槸鏃犳硶浠庤〃鍗曚笂濉啓淇℃伅浜嗐?/p></div><div><hibernate-mapping><br />    <class name="org.gecs.hibernate.test.AdDepartment" table="AD_DEPARTMENT" schema="BARCODE"<br />           <span style="color: red;">dynamic-insert="true" dynamic-update="true"></span><br />        <id name="adDepartmentId" type="long"><br />            <column name="AD_DEPARTMENT_ID" precision="22" scale="0" /><br />            <generator class="sequence"><br />                <param name="sequence">AD_DEPARTMENT_SEQ</param><br />            </generator><br />        </id><br />        <property name="departmentName" type="string"><br />            <column name="DEPARTMENT_NAME" length="50" not-null="true" /><br />        </property><br />        <property name="active" type="java.lang.Character"<span style="color: red;"> insert="false" update="true"></span><br />            <column name="ACTIVE" length="1" /><br />        </property><br />        <property name="createdTime" type="date" <span style="color: red;">insert="false" update="false"></span><br />            <column name="CREATED_TIME" length="7" /><br />        </property><br />        <property name="createdUser" type="string"><br />            <column name="CREATED_USER" length="20" not-null="true" /><br />        </property><br /><br />    </class><br /></hibernate-mapping><br /></div><div><strong style="color: red;">娉細insert="false" update="false"銆鐨勪綔鐢ㄦ槸涓嶅褰撳墠瀛楁榪涜insert鍜寀pdate鎿嶄綔錛岃繖鏍穐ibernate灝變笉浼氬湪鏈寚鏄庨粯璁ゅ垪鐨勬儏鍐典笅灝嗘暟鎹簱琛ㄤ腑榛樿鍊煎瓧孌墊竻絀猴紝浣嗗悓鏃朵篃浼氶犳垚鏃犳硶瀵規瀛楁鎻掑叆鎴栨洿鏂伴潪榛樿鍊箋?/strong></div><img src ="http://m.tkk7.com/keweibo/aggbug/353872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2011-07-07 14:55 <a href="http://m.tkk7.com/keweibo/articles/353872.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愬浘銆慔ibernate Tools-浠g爜鐢熸垚錛堣漿錛?/title><link>http://m.tkk7.com/keweibo/articles/353861.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 07 Jul 2011 03:54:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/353861.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/353861.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/353861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/353861.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/353861.html</trackback:ping><description><![CDATA[<div><div class="j7pll7h" id="cnblogs_post_body"><p><strong><span style="color: red;">杞嚜錛?/span><span style="color: red;">http://www.cnblogs.com/abllyboy/archive/2010/12/23/1914577.html</span></strong><br /></p><p>寤虹珛濂芥暟鎹簱鍚庯紝鐐瑰嚮涓涓敭錛屼唬鐮佸氨鐢熸垚浜嗭紝榪欏疄鍦ㄦ槸浠藉崄鍒嗘儸鎰忕殑浜嬫儏錛屽墠闈㈡湁浠嬬粛Hibernate Tools灝卞彲浠ョ敓鎴愪唬鐮侊紝閭d箞鎴戜滑鎬庝箞鍒╃敤瀹冩潵鐢熸垚浠g爜鍛€?/p> <p>涓嬮潰灝辨妸璇︾粏姝ラ璐村嚭鏉ワ紝鍚屾牱錛屾湁鍥炬湁鐪熺浉銆?/p> <p>Step1錛氬畨瑁呭ソHibernate Tools錛屽緩绔嬩竴涓狣ynamic web project,絎旇呭伐紼嬪悕涓?#8220;HibernateTest”</p> <p>Step2錛氱瑪璁頒互Mysql涓虹ず渚嬶紝鎵浠ュ畨瑁呬竴涓狹ysql錛屽緩绔嬬浉搴旀祴璇曟暟鎹簱鍙婅〃錛屼笅鍥句負絎旇呯殑鏁版嵁搴撳強琛?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310170478.jpg" alt="" /></p> <p>Step3錛氬皢MySql鐨凧dbc椹卞姩鎷瘋礉鑷砽ib鐩綍錛岀瑪鑰呯殑涓簃ysql-connector-java-5.1.14-bin.jar錛屽彲浠ュ幓Mysql瀹樼綉涓嬭澆</p> <p>Step4錛氬埄鐢℉ibernate Tools鐢熸垚hibernate.cfg.xml鏂囦歡錛屽涓嬪浘錛?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310200339.jpg" alt="" height="145" width="586" /></p> <p>鐐瑰嚮鍚庡彲浠ュhibernate.cfg.xml鍛戒護錛屼笉綆″畠鐩存帴榛樿杞埌涓嬩竴姝ョ殑閰嶇疆鐣岄潰錛岀瑪鑰呯殑閰嶇疆濡備笅鍥撅細</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310245074.jpg" alt="" /></p> <p>鐐瑰嚮瀹屾垚鍚庯紝瀹冨皢鐢熸垚濡備笅xml鐨勯厤緗枃浠?/p> <p> </p> <div> <div class="tt3jtfr" id="highlighter_760520"><div><div alt1=""><table><tbody><tr><td><code>1</code></td><td><code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"UTF-8"</code><code>?><br><!DOCTYPE hibernate-configuration PUBLIC<br>     </code><code>"-//Hibernate/Hibernate Configuration DTD 3.0//EN"</code><code><br>      </code><code>"<a </code><code>><br><hibernate-configuration><br>    <session-factory><br>        <property name=</code><code>"hibernate.connection.driver_class"</code><code>>com.mysql.jdbc.Driver</property><br>        <property name=</code><code>"hibernate.connection.password"</code><code>></code><code>111</code><code></property><br>        <property name=</code><code>"hibernate.connection.url"</code><code>>jdbc:<a href="mysql://localhost:">mysql://localhost:</a></code><code>3306</code><code>/javadb</property><br>        <property name=</code><code>"hibernate.connection.username"</code><code>>root</property><br>        <property name=</code><code>"hibernate.dialect"</code><code>>org.hibernate.dialect.MySQLDialect</property><br>    </session-factory><br></hibernate-configuration><br></code></td></tr></tbody></table></div></div></div> </div> <p> </p> <p>Step5錛欻ibernate Console 閰嶇疆</p> <p>a.鍙抽敭宸ョ▼錛岀偣鍑籖un as-Run Configurations榪涘叆濡備笅鐣岄潰騫墮夋嫨Hibernate Console Configuration錛?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310343581.jpg" alt="" /></p> <p>b.鏂板緩涓涓狢onfigure鍚嶄負HibernateConsole錛屽悕瀛楀彲闅忎釜浜虹埍濂芥潵鍛藉悕</p> <p>絎旇呭悇鏍囩欏甸厤緗涓嬶細</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310382123.jpg" alt="" /></p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310382663.jpg" alt="" /></p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310383147.jpg" alt="" /></p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310383631.jpg" alt="" /></p> <p>Step6:鍒╃敤Hibernat Tools鐢熸垚reveng.xml</p> <p>a.宸ョ▼涓彸閿涓嬪浘錛屾坊鍔爎eveng.xml</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311101564.jpg" alt="" /></p> <p>b.娌″暐璇寸殑鍛戒釜鍚嶏紝閫夋嫨鏀劇疆浣嶇疆</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311110921.jpg" alt="" /></p> <p>c.鎸夌収綆ご鏂瑰悜榪涜鎿嶄綔錛岄夋嫨console鐨勯厤緗紝鍐嶇偣鍑誨埛鏂幫紝灝辮兘鐪嬪埌鏁版嵁搴撲腑鐨勮〃錛屽皢瀹冧滑Include榪涙潵錛屽涓嬪浘</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311115895.jpg" alt="" /></p> <p>d:鏈緇堟晥鏋?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311132939.jpg" alt="" /></p> <p>Step7:榪欐槸鏈鍚庝竴姝ヤ簡錛屾縺鍔ㄤ漢蹇冪殑鏃跺埢灝辮鍒頒簡</p> <p>a.鍦‥clipse鐨勫伐鍏鋒爮涓皢Hibernate Code Generate鏄劇ず鍑烘潵錛屾樉紺哄嚭鏉ュ悗鐐瑰嚮Hibernate Code Generate Configurations錛屽涓嬪浘:</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122310415767.jpg" alt="" /></p> <p>b.Main鏍囩欏典腑閫夋嫨鎺у埗鍙幫紝閫夋嫨鏂囦歡杈撳嚭璺緞錛屽寘鍚嶏紝reveng.xml鏂囦歡</p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311143172.jpg" alt="" /></p> <p>c.Exporters鏍囩欏碉紝閫夋嫨瑕佺敓鎴愮殑鏂囦歡錛岃寰楀嬀涓奌ebernate xml Mappings鍙奌ebernate xml Configuration,瀹冧滑灝嗚嚜鍔ㄧ敓鎴愭槧灝勬枃浠跺茍娉ㄥ唽錛?/p> <p>閰嶇疆濂藉悗錛岀偣鍑籖un鍗沖彲鐢熸垚浠g爜銆?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311155578.jpg" alt="" /></p> <p> </p> <p>澶у姛鍛婃垚錛屾渶鍚庣殑鐢熸垚鐨勪唬鐮佺粨鏋勫涓嬪浘錛?/p> <p><img src="http://pic002.cnblogs.com/images/2010/112250/2010122311185116.jpg" alt="" /></p> <p> </p> <p>鎰熻阿浣犵殑闃呰錛屽笇鏈涙湰鏂囧浣犳湁鐢紒</p></div></div><img src ="http://m.tkk7.com/keweibo/aggbug/353861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2011-07-07 11:54 <a href="http://m.tkk7.com/keweibo/articles/353861.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate鍑虹幇javax.naming.NoInitialContextException 閿欒鐨勮В鍐沖姙娉?/title><link>http://m.tkk7.com/keweibo/articles/353676.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 05 Jul 2011 00:12:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/353676.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/353676.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/353676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/353676.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/353676.html</trackback:ping><description><![CDATA[寮傚父淇℃伅錛?br /><div>08:02:56,329  WARN SessionFactoryObjectFactory:123 - Could not unbind factory from JNDI<br />javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial<br />    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)<br />    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)<br />    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)<br />    at javax.naming.InitialContext.unbind(InitialContext.java:416)<br />    at org.hibernate.impl.SessionFactoryObjectFactory.removeInstance(SessionFactoryObjectFactory.java:116)<br />    at org.hibernate.impl.SessionFactoryImpl.close(SessionFactoryImpl.java:806)<br />    at org.hibernate.test.junit.UserTest.tearDown(UserTest.java:43)<br />    at junit.framework.TestCase.runBare(TestCase.java:130)<br />    at junit.framework.TestResult$1.protect(TestResult.java:106)<br />    at junit.framework.TestResult.runProtected(TestResult.java:124)<br />    at junit.framework.TestResult.run(TestResult.java:109)<br />    at junit.framework.TestCase.run(TestCase.java:118)<br />    at junit.framework.TestSuite.runTest(TestSuite.java:208)<br />    at junit.framework.TestSuite.run(TestSuite.java:203)<br />    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)<br />    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br />    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)<br />    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br />    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br />    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)</div>寰堝鎬垜鐨勯」鐩茍娌℃湁浣跨敤鍒癑NDI錛屼絾鏄嵈鎶涘嚭JNDI鐩稿叧鐨勫紓甯鎬俊鎭?br />鍘熸潵鏄疕ibernate鐨勯厤緗枃浠秇ibernate.cfg.xml鏈夐棶棰?br /><div><hibernate-configuration><br />    <session-factory <strong>name="foo"</strong>><br />        <property name="hibernate.connection.url">jdbc:oracle:thin:@10.240.144.25:1521:MES</property><br />        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property><br />        <property name="hibernate.connection.username">*****</property><br />        <property name="hibernate.connection.password">*****</property><br />        <property name="dialect">org.hibernate.dialect.OracleDialect</property><br />        <property name="show_sql">true</property><br />        <br />        <mapping resource="org/hibernate/test/User.hbm.xml"/><br />        <br />    </session-factory><br /></hibernate-configuration></div><br />鍘熷洜錛?lt;seesion-factory>鍏冪礌澶氫簡灞炴?name.<br /><div><span style="font-family: 瀹嬩綋;" face="瀹嬩綋"><span style="font-size: small;" size="3">榪欐牱錛宧ibernate浼氳瘯鍥炬妸榪欎釜sessionfacotry娉ㄥ唽鍒癑NDI涓幓</span></span></div><img src ="http://m.tkk7.com/keweibo/aggbug/353676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2011-07-05 08:12 <a href="http://m.tkk7.com/keweibo/articles/353676.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閰嶇疆Middlegen-Hibernate鍜宧ibernate-extensions浠ヤ駭鐢焗bm鏄犲皠鏂囦歡鍜孭OJO(杞?http://m.tkk7.com/keweibo/articles/292609.htmlKeKeWed, 26 Aug 2009 02:50:00 GMThttp://m.tkk7.com/keweibo/articles/292609.htmlhttp://m.tkk7.com/keweibo/comments/292609.htmlhttp://m.tkk7.com/keweibo/articles/292609.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/292609.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/292609.html杌熼珨涓嬭級鐩擱棞鍦板潃錛歨ttp://ant.apache.org/bindownload.cgi?Preferred=http%3A%2F%2Fapache.etoak.com

http://sourceforge.net/projects/hibernate/files/

鍏堝喅鏉′歡錛?/font>

宸茬粡瀹夎浜?/span>ant鍜?/span>MySQL鏁版嵁搴擄紝鏁版嵁搴撹〃宸茬粡寤虹珛銆?/span>

 

1銆?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  浠?/span>Hibernate瀹樻柟緗戠珯涓嬭澆Middlegen-Hibernate鍜?/span>hibernate-extensions錛屽茍瑙e帇銆?/span>

2銆?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  閰嶇疆Middlegen-Hibernate:

2.1 閰嶇疆鏁版嵁搴撹繛鎺?/span>

鍋囪榪炴帴鐨勬暟鎹簱鏄?/span>MySQL錛屽湪Middlegen-Hibernate-r5\config\database鐩綍涓湁涓涓?/span>mysql.xml鏂囦歡錛屾槸鐢ㄦ潵閰嶇疆MySQL鏁版嵁搴撶殑榪炴帴鐨勩傚唴瀹逛負錛?/span>

   <property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/>

   <property name="database.driver.file" value="${lib.dir}/mysql-connector-java-3.0.15-ga-bin.jar"/>

   <property name="database.driver.classpath"      value="${database.driver.file}"/>

   <property name="database.driver"                value="org.gjt.mm.mysql.Driver"/>

   <property name="database.url"                   value="jdbc:mysql://localhost/jboss"/>

   <property name="database.userid"                value="jboss"/>

   <property name="database.password"              value="jboss"/>

   <property name="database.schema"                value=""/>

   <property name="database.catalog"               value=""/>

 

   <property name="jboss.datasource.mapping"       value="mySQL"/>

灝?/span>mysql-connector-java-3.0.15-ga-bin.jar鎷瘋礉鍒?/span>${lib.dir}錛屼篃灝辨槸Middlegen-Hibernate-r5\lib鐩綍銆?/span>

淇敼閰嶇疆鏂囦歡涓殑鏁版嵁搴撹繛鎺ラ」鐩?/span>database.url銆?/span>database.userid銆?/span>database.userid 浣?/span>Middlegen-Hibernate鍙互鎵懼埌鏁版嵁搴撱?/span>

2.2 閰嶇疆Middlegen-Hibernate-r5鐨?/span>ant榪愯鏂囦歡build.xml

<!DOCTYPE project [

    <!ENTITY database SYSTEM "file:./config/database/mysql.xml">

]>

鎸囧嚭浣跨敤鐨勬暟鎹簱閰嶇疆鏂囦歡銆?/font>

<project name="Middlegen Hibernate" default="all" basedir=".">

   <property file="${basedir}/build.properties"/>

   <property name="name" value="hibernatesample"/>

鎸囧嚭浣犵殑搴旂敤鍚嶇О銆?/font>

   <property name="build.gen-src.dir"              value="C:/sample"/>

鎸囧嚭hbm鐨勮緭鍑鴻礬寰勩?/span>

         <hibernate

            destination="${build.gen-src.dir}"

            package="org.hibernate.sample"

            genXDocletTags="false"

            genIntergratedCompositeKeys="false"

            javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"

         />

鎸囧嚭hbm鎵鍦ㄧ殑鍖呯殑浣嶇疆銆?/span>

鎸囧嚭hbm.xml涓槸鍚﹂渶瑕?/span>XDoclet Tags銆?/span>

3銆?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  榪愯Middlegen-Hibernate:

鍦?/span>Middlegen-Hibernate鐩綍涓嬭繍琛?/span>ant錛岃繘鍏?/span>Middlegen-Hibernate鐨勫浘褰㈢晫闈€傚彲浠ヨ緗〃錛屽拰瀛楁鐨勭壒鎬с傜劧鍚庢寜Genarate錛屼駭鐢?/span>hbm.xml鏂囦歡銆?/span>

4銆?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  閰嶇疆hibernate-extensions

鍦?/span>hibernate-extensions-2.1.2\tools\bin鐩綍鏈変竴涓?/span>setenv.bat鏂囦歡錛屾敼鍙樺叾鍐呭涓猴細

set JDBC_DRIVER=C:\java\Middlegen-Hibernate-r5\lib\mysql-connector-java-3.0.15-ga-bin.jar

set HIBERNATE_HOME=C:\java\hibernate-2.1.6

 

set CORELIB=%HIBERNATE_HOME%\lib

set LIB=..\lib

set PROPS=%HIBERNATE_HOME%\src

set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%CORELIB%\commons-logging-1.0.4.jar;%CORELIB%\commons-collections-2.1.1.jar;%CORELIB%\commons-lang-1.0.1.jar;%CORELIB%\cglib-full-2.0.2.jar;%CORELIB%\dom4j-1.4.jar;%CORELIB%\odmg-3.0.jar;%CORELIB%\xml-apis.jar;%CORELIB%\xerces-2.4.0.jar;%CORELIB%\xalan-2.4.0.jar;%LIB%\jdom.jar;%LIB%\..\hibernate-tools.jar

娉ㄦ剰綰㈣壊瀛椾綋鎻愮ず鐨勫潎鏄礬寰勫拰JAR鏂囦歡鍚嶏紝涓瀹氳姝g‘銆?/span>

5銆佽繍琛?/span>hibernate-extensions錛屾牴鎹?/span>hbm.xml浜х敓POJO鏂囦歡

鍦?/span>DOS涓繍琛?/span>hbm2java c:\sample\org\hibernate\sample\*.xml --output=c:\sample\

杞夎嚜錛歨ttp://m.tkk7.com/relax/archive/2005/03/01/1588.html



Ke 2009-08-26 10:50 鍙戣〃璇勮
]]>
[杞琞涓涓硾鍨婬ibernate DAO瀹炵幇http://m.tkk7.com/keweibo/articles/184372.htmlKeKeThu, 06 Mar 2008 15:17:00 GMThttp://m.tkk7.com/keweibo/articles/184372.htmlhttp://m.tkk7.com/keweibo/comments/184372.htmlhttp://m.tkk7.com/keweibo/articles/184372.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/184372.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/184372.html闃呰鍏ㄦ枃

Ke 2008-03-06 23:17 鍙戣〃璇勮
]]>
澶氬澶氬叧鑱斿叧緋葷殑浣跨敤http://m.tkk7.com/keweibo/articles/171544.htmlKeKeSat, 29 Dec 2007 07:01:00 GMThttp://m.tkk7.com/keweibo/articles/171544.htmlhttp://m.tkk7.com/keweibo/comments/171544.htmlhttp://m.tkk7.com/keweibo/articles/171544.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/171544.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/171544.html  澶氬澶氬彧鏈夊弻鍚戝叧緋伙紙濡傛灉娣誨姞涓寮犺緟鍔╄〃鏉ュ瓨鍌ㄥ瀵瑰鐨勫崟鍚戝叧緋諱篃鍙互錛屼絾鏄笉鍊煎緱
榪欎箞鍋氾紝鍥犱負澶氬澶氱殑鍗曞悜鍏崇郴鍙互鐢ㄥ瀵逛竴鎴栬呬竴瀵瑰鐨勫崐鍚戝叧緋繪潵琛ㄨ揪錛屼笉蹇呰娣誨姞涓寮?br /> 杈呭姪琛級錛屽瀛︾敓涓庤紼嬩箣闂達紝涓涓鐢熷搴斿涓紼嬶紝涓涓紼嬩篃鍙互琚涓鐢熼夋嫨銆?/p>

Student.hbm.xml
...
<hibernate-mapping>
 <class name="model.Student" table="student">
  <id name="id" unsaved-value="null">
   <generator class="uuid.hex"/>
  </id>
  <property name="name" type="string"/>
  <set name="courses"
    table="student_course"
    cascade="save-update"
  >
    <key column="stu_id"/>
    <many-to-many class="model.Course
      column="course_id"/>
  </set>

 <class>
</hibernate-mapping>
澶氬澶氬叧緋婚渶瑕侀厤緗殑灞炴ф瘮杈冨涓浜涖傚垵瀛﹁呯粡甯鎬細鎶?lt;key column=""/>鍜?lt;column="">鐨勫?br /> 寮勫弽浜嗭紝鍏跺疄鍙璁頒綇涓涓師鍒欙細<key column="">鎬繪槸鍜屾湰韜被鐨勪富閿甶d瀵瑰簲錛岃?lt;column="">
鎬繪槸涓庡叧鑱旂被鐨勪富閿甶d鐩稿搴斻傚浜庝笂闈㈢殑Student.hbm.xml,鍏寵仈綾繪槸Course,鏈韓綾誨垯鏄疭tudent

Course.hbm.xml
...
<hibernate-mapping>
 <class name="model.Course" table="course">
  <id name="id" unsaved-value="null">
   <generator class="uuid.hex"/>
  </id>
  <propery name="name" type="string"/>
  <set name="students"
    table="student_course"
    cascade="save-update"
    >
    <key columm="course_id"/>
    <many-to-many class="model.Student"
      column="stu_id"/>
  </set>

 </class>
</hibernate-mapping>
娉ㄦ剰錛歋tudent涓嶤ourse鐨刢ascade閮借緗負save-update錛屽湪澶氬澶氱殑鍏崇郴涓紝all,delete絳?br /> cascade鏄病鏈夋剰涔夌殑錛屽洜涓哄瀵瑰鍏崇郴涓紝騫朵笉鑳藉洜涓虹埗瀵硅薄琚垹闄わ紝鑰岄犳垚琚寘鎷殑瀛愬璞?br /> 琚垹闄わ紝鍥犱負鍙兘榪樻湁鍏朵粬鐨勭埗瀵硅薄鍙傝冧簡榪欎釜瀛愬璞°?/span>

鍙﹀錛屽湪澶氬澶氬叧緋諱腑錛屽鏋滃弻鏂歸兘鏈夋帶鍒舵潈錛堜篃灝辨槸鍙屾柟閮芥病鏈夎緗甶nverse="true"錛夛紝鍒?br /> 鍙屾柟閮借鎶婂叧鑱斿叧緋誨弽鏄犲埌鏁版嵁搴撱傚繀欏誨湪鏌愪竴鏂硅緗甶nverse="true"錛岀劧鍚庡湪鎵ц璇彞鏃朵嬌鐢?br /> 涓繪帶鏂硅繘琛屾搷浣滐紙涔熷氨鏄病鏈夎緗甶nverse="true"鐨勯偅涓鏂癸級銆?/strong>



Ke 2007-12-29 15:01 鍙戣〃璇勮
]]>
涓瀵瑰銆佸瀵逛竴鍏寵仈鍏崇郴鐨勪嬌鐢?/title><link>http://m.tkk7.com/keweibo/articles/171520.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 29 Dec 2007 06:32:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/171520.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/171520.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/171520.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/171520.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/171520.html</trackback:ping><description><![CDATA[<p>  涓瀵瑰鍜屽瀵逛竴鍏崇郴鍦ㄥ疄闄呯敓媧諱腑鏄潪甯稿父瑙佺殑銆傚湪緙栧啓紼嬪簭鏃訛紝鏈変袱縐嶅疄鐜扮殑褰㈠紡<br /> 鍒嗗埆鏄崟鍚戝叧鑱斿拰鍙屽悜鍏寵仈銆?/p> <p><span style="font-size: 24pt"><em><u><strong>鍗曞悜鍏寵仈</strong></u></em><br /> <br /> <strong><em><u>鍙屽悜鍏寵仈</u></em></strong></span></p> <p>  鏈妭涓嬌鐢ㄥ埌涓や釜綾伙紝鍒嗗埆鏄彮綰?Team)鍜屽鐢?Student)錛屽鐢熷拰鐝駭涔嬮棿鏄瀵逛竴<br /> 鍏崇郴銆?br /> 鍏蜂綋鐨勫叧鑱斿疄鐜版簮浠g爜濡備笅錛?br /> Student.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Student" table="student"><br />   <id name="id" unsaved-value="null"><br />    <generator class="uuid.hex"/><br />   </id><br />   <property name="name" type="string'/><br /> <span style="color: #0000ff"><strong>  <many-to-one name="team"<br />     class="model.Team"<br />     column="team_id" <!--鍜宼eam鍙戠敓鍏寵仈鐨勫垪鍚?-><br />     cascade="none"<br />     fetch="join"<br />   /></strong></span><br />  </class><br /> </hibernate-mapping></p> <p><span style="color: #ff0000"><strong><many-to-one>鏍囩鍏鋒湁column灞炴э紝column灞炴ф繪槸鍜屽叧鑱旂被錛堝浜嶴tudent鏉ヨ錛屽叧鑱旂被<br /> 鏄疶eam錛夌殑涓婚敭id 鐩稿搴旓紝鍥犳Hibernate浼氭牴鎹畇tudent琛ㄤ腑鐨則eam_id錛屾牴鎹甌eam琛ㄤ腑璁劇疆<br /> 鐨刬d鍒楋紙涓鑸儏鍐靛垪鍚嶄篃鍙玦d錛夛紝鍙栧嚭team.id=student.team_id鐨勮褰曪紝鏋勯犳垚Team瀵硅薄榪?br /> 鍥炵粰Student綾匯?/strong></span></p> <p>Team.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Team" table="team" lazy="true"><br />   <id name="id" unsaved-value="null"><br />    <generator class="uuid.hex"/><br />   </id><br />   <property name="teamName" type="string"/><br /> <strong style="color: #0000ff">  <set name="students" cascade="save-update" lazy="true" <span style="color: #ff0000">inverse="true"></span><br />    <key column="team_id"/><br />    <one-to-many class="model.Student"/><br />   </set></strong><br />  </class><br /> </hibernate-mapping></p> <p><span style="color: #ff0000"><strong>Team瀵筍tudent鏄竴瀵瑰鍏崇郴錛屼竴瀵瑰鍏鋒湁<key column=""/>灞炴э紝key鏍囩鎬繪槸鍜屾湰韜被鐨勪富閿?br /> 鐩稿搴斻傚湪鍙栧緱Team瀵硅薄鏃訛紝閫氳繃Team鐨勪富閿甶d涓嶴tudent琛ㄤ腑鐨則eam_id榪涜鍖歸厤錛屽鏋?br /> team.id=student.team_id錛屽垯璁や負姝ゅ鐢熸槸鏈彮綰х殑錛屼簬鏄姞杞藉鐢燂紝鎶婂鐢熷璞″姞鍏eam<br /> 瀵硅薄鐨勫鐢熼泦鍚堛?/strong></span></p> <p>璁劇疆inverse鏍囩<br />   鐢變簬鍦═eam.hbm.xml涓緗簡inverse="true",Team鍜孲tudent涔嬮棿鐨勫叧緋昏漿鐢盨tudent鏉ョ淮鎶?br /> 鍥犳錛屽綋Team鎺屾彙緇存姢鏉冩椂(inverse="false"鎴栬呴粯璁ょ姸鎬侊級錛屽畠璐熻矗灝嗚嚜宸辯殑id鍛婅瘔Student<br /> 錛岀劧鍚嶩ibernate鍙戦乽pdate璇彞鍘繪洿鏂拌褰曘備絾鐜板湪璁劇疆浜唅nverse="true"涔嬪悗錛岀淮鎶ゆ潈鍦?br /> Student鎵嬩腑錛屼簬鏄疕ibernate涓嶅啀鍙戦乽pdate璇彞錛岃岀敱Student鑷姩鍘誨彇寰梩eam_id錛岃岃繖涓?br /> 鍔ㄤ綔鍏跺疄灝辨槸瀹屾垚涓涓?#8220;瀛︾敓娣誨姞鐝駭”鍔ㄤ綔錛屼篃灝辨槸璇彞newStu.setTeam(team)銆?/p> <img src ="http://m.tkk7.com/keweibo/aggbug/171520.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-12-29 14:32 <a href="http://m.tkk7.com/keweibo/articles/171520.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓瀵逛竴鍏寵仈鍏崇郴鐨勪嬌鐢?/title><link>http://m.tkk7.com/keweibo/articles/171510.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 29 Dec 2007 06:00:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/171510.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/171510.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/171510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/171510.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/171510.html</trackback:ping><description><![CDATA[<p>  涓瀵逛竴鍏崇郴鍦ㄥ疄闄呯敓媧諱腑鏄瘮杈冨父瑙佺殑錛屽鏋滃鐢熶笌韜喚璇佺殑鍏崇郴錛屽鐢熶笌妗f鐨勫叧緋葷瓑絳夈?br />   涓瀵逛竴鍏崇郴鍦℉ibernate涓殑瀹炵幇鏈変袱縐嶆柟寮忥紝鍒嗗埆鏄?span style="color: red"><strong>涓婚敭鍏寵仈</strong></span>鍜?span style="color: red"><strong>澶栭敭鍏寵仈</strong></span>銆?/p> <p><span style="font-size: 24pt"><em><u>浠ヤ富閿叧鑱?br /> </u></em></span><br />   涓婚敭鍏崇郴鐨勯噸鐐規槸錛氬叧鑱旂殑涓や釜瀹炰綋鍏變韓涓涓富閿箋?br /> Student.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Student" table="student" lazy="true"><!--鎶婄被鍜岃〃鍏寵仈璧鋒潵--><br />   <id name="id" unsaved-value="null"><!--id鐨勪駭鐢熸柟寮忔槸uuid.hex--><br />    <generator class="uuid.hex"/><br />   </id><br />   <property name="name" type="sring"/><br />   <one-to-one name="cer"<br />     class="model.Certificate"<br />     fetch="join"<br />     cascade="all"<br />   /><!--鏄犲皠瀵瑰簲鐨勮韓浠借瘉瀵硅薄--><br />  </class><br /> </hibernate-mapping></p> <p>Certificate.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Certificate" table="certificate" lazy="true"><br />   <id name="id"><br />   <!--澶栭敭鐢熸垚鏈哄埗錛屽紩鐢╯tu瀵硅薄鐨勪富閿綔涓篶ertificate鏁版嵁琛ㄧ殑涓婚敭鍜屽閿?-><br /> <span style="color: #0000ff"><strong>   <generator class="foreign"><br />     <param name="property">stu</param><br />    </generator></strong></span><br />   </id><br />   <one-to-one name="stu"<br />     class="model.Student"<br />     constrained="true" <!--琛ㄧずCertificate寮曠敤浜唖tu鐨勪富閿綔涓哄閿?-><br />   /><br />  </class><br /> </hibernate-mapping></p> <p>涓婅堪鐨勪袱涓厤緗枃浠跺湪<one-to-one>鏍囩涓兘娌℃湁璁劇疆column灞炴?br /> 錛堝疄闄呬笂<one-to-one>鏍囩鏈韓灝辨病鏈塩olumn灞炴э級銆?br /> </p> <p><span style="font-size: 24pt"><br /> <u><em>浠ュ閿叧鑱?/em></u><br /> </span><br />   浠ュ閿叧鑱旂殑閲嶇偣鏄細涓や釜瀹炰綋鍚勮嚜鏈変笉鍚岀殑涓婚敭錛屼絾鍏朵腑涓涓疄浣撴湁涓涓閿紩鐢?br /> 浜嗗彟涓涓〃鐨勪富閿?/p> <p>Student.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Student" table="student" lazy="true"><br />   <id name="id" nusaved-value="null"><br />    <generator class="uuid.hex"/><br />   </id><br />   <property name="name" type="sring"/><br />   <one-to-one name="cer"<br />     class="model.Certificate"<br />     fetch="join"<br />     cascade="all"<br />   /><!--鏄犲皠瀵瑰簲鐨勮韓浠借瘉瀵硅薄--><br />  </class><br /> </hibernate-mapping><br /> 鍙互鐪嬪埌Student.hbm.xml鍜屼互涓婚敭鍏寵仈鏃剁殑浠g爜鏄竴鏍風殑錛屽茍娌℃湁鏀瑰彉銆?/p> <p>Certificate.hbm.xml<br /> ...<br /> <hibernate-mapping><br />  <class name="model.Certificate" table="certificate" lazy="true"><br />   <id name="id"><br />    <generator class="uuid.hex"/> <!--涓嶅啀鏄痜oreign浜?-><br />   </id><br /> <span style="color: #0000ff"><strong>  <many-to-one name="stu"<br />     class="model.Student"<br />     unique="true" <!--鍞竴鐨勫瀵逛竴錛屽叾瀹炰篃灝卞彉鎴愪簡涓瀵逛竴鍏崇郴--><br />     column="stu_id" <br />   /></strong></span><br />  </class><br /> </hibernate-mapping><br /> 浠ュ閿叧鑱旂殑涓瀵逛竴錛屽叾瀹炴湰璐ㄤ笂鍙樻垚浜嗕竴瀵瑰鐨勫弻鍚戝叧鑱斾簡錛岀紪鍐欐椂鐩存帴<br /> 鎸夌収涓瀵瑰鍜屽瀵逛竴鐨勮姹傜紪鍐欙紝鏈鍚庡湪many-to-one榪欎竴杈逛笂鍔犱笂涓涓?br /> unique="true"鍗沖彲銆?/p> <img src ="http://m.tkk7.com/keweibo/aggbug/171510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-12-29 14:00 <a href="http://m.tkk7.com/keweibo/articles/171510.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate3鐨凞etachedCriteria鏀寔(杞?http://m.tkk7.com/keweibo/articles/165427.htmlKeKeWed, 05 Dec 2007 03:10:00 GMThttp://m.tkk7.com/keweibo/articles/165427.htmlhttp://m.tkk7.com/keweibo/comments/165427.htmlhttp://m.tkk7.com/keweibo/articles/165427.html#Feedback1http://m.tkk7.com/keweibo/comments/commentRss/165427.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/165427.html2005-07-12 09:55 浣滆咃細 robbin 鍑哄錛?http://dev.yesky.com/241/2033241.shtml

Hibernate3鏀寔DetachedCriteria錛岃繖鏄竴涓潪甯告湁鎰忎箟鐨勭壒鎬э紒鎴戜滑鐭ラ亾錛屽湪甯歌鐨刉eb緙栫▼涓紝鏈夊ぇ閲忕殑鍔ㄦ佹潯浠舵煡璇紝鍗崇敤鎴峰湪緗戦〉涓婇潰鑷敱閫夋嫨鏌愪簺鏉′歡錛?a class="bluekey" target="_blank">紼嬪簭鏍規嵁鐢ㄦ埛鐨勯夋嫨鏉′歡錛屽姩鎬佺敓鎴怱QL璇彞錛岃繘琛屾煡璇€?

銆銆閽堝榪欑闇姹傦紝瀵逛簬鍒嗗眰搴旂敤紼嬪簭鏉ヨ錛學eb灞傞渶瑕佷紶閫掍竴涓煡璇㈢殑鏉′歡鍒楄〃緇欎笟鍔″眰瀵硅薄錛屼笟鍔″眰瀵硅薄鑾峰緱榪欎釜鏉′歡鍒楄〃涔嬪悗錛岀劧鍚庝緷嬈″彇鍑烘潯浠訛紝鏋勯犳煡璇㈣鍙ャ傝繖閲岀殑涓涓毦鐐規槸鏉′歡鍒楄〃鐢ㄤ粈涔堟潵鏋勯狅紵浼犵粺涓婁嬌鐢∕ap錛屼絾鏄繖縐嶆柟寮忕己闄峰緢澶э紝Map鍙互浼犻掔殑淇℃伅闈炲父鏈夐檺錛屽彧鑳戒紶閫抧ame鍜寁alue錛屾棤娉曚紶閫掔┒绔熻鍋氭庢牱鐨勬潯浠惰繍綆楋紝絀剁珶鏄ぇ浜庯紝灝忎簬錛宭ike錛岃繕鏄叾瀹冪殑浠涔堬紝涓氬姟灞傚璞″繀欏葷‘鍒囨帉鎻℃瘡鏉ntry鐨勯殣鍚潯浠躲傚洜姝や竴鏃﹂殣鍚潯浠舵敼鍙橈紝涓氬姟灞傚璞$殑鏌ヨ鏋勯犵畻娉曞繀欏葷浉搴斾慨鏀癸紝浣嗘槸榪欑鏌ヨ鏉′歡鐨勬敼鍙樻槸闅愬紡綰﹀畾鐨勶紝鑰屼笉鏄▼搴忎唬鐮佺害鏉熺殑錛屽洜姝ら潪甯稿鏄撳嚭閿欍?

銆銆DetachedCriteria鍙互瑙e喅榪欎釜闂錛屽嵆鍦╳eb灞傦紝紼嬪簭鍛樹嬌鐢―etachedCriteria鏉ユ瀯閫犳煡璇㈡潯浠訛紝鐒跺悗灝嗚繖涓狣etachedCriteria浣滀負鏂規硶璋冪敤鍙傛暟浼犻掔粰涓氬姟灞傚璞°傝屼笟鍔″眰瀵硅薄鑾峰緱DetachedCriteria涔嬪悗錛屽彲浠ュ湪session鑼冨洿鍐呯洿鎺ユ瀯閫燙riteria錛岃繘琛屾煡璇€傚氨姝わ紝鏌ヨ璇彞鐨勬瀯閫犲畬鍏ㄨ鎼鍒皐eb灞傚疄鐜幫紝鑰屼笟鍔″眰鍒欏彧璐熻矗瀹屾垚鎸佷箙鍖栧拰鏌ヨ鐨勫皝瑁呭嵆鍙紝涓庢煡璇㈡潯浠舵瀯閫犲畬鍏ㄨВ鑰︼紝闈炲父瀹岀編錛佽繖鎭愭曚篃鏄互鍓嶅緢澶氫紒鍥懼湪web灞備唬鐮佷腑鏋勯燞QL璇彞鐨勪漢鎯沖疄鐜扮殑姊︽兂鍚э紒

銆銆紺轟緥浠g爜鐗囨濡備笅錛?

銆銆web灞傜▼搴忔瀯閫犳煡璇㈡潯浠訛細

銆銆java浠g爜:

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.add(Restrictions.eq("name", "department")).createAlias("employees", "e").add(Restrictions.gt(("e.age"), new Integer(20)));

銆銆Department鍜孍mployee鏄竴瀵瑰鍏寵仈錛屾煡璇㈡潯浠朵負錛?

銆銆鍚嶇О鏄?#8220;department”寮鍙戦儴闂紱
銆銆閮ㄩ棬閲岄潰鐨勯泧鍛樺勾榫勫ぇ浜?0宀侊紱

銆銆涓氬姟灞傚璞′嬌鐢ㄨ鏉′歡鎵ц鏌ヨ錛?

銆銆java浠g爜:

detachedCriteria.getExecutableCriteria(session).list();

銆銆鏈澶х殑鎰忎箟鍦ㄤ簬錛屼笟鍔″眰浠g爜鏄浐瀹氫笉鍙樼殑錛屾墍鏈夋煡璇㈡潯浠剁殑鏋勯犻兘鍦╳eb灞傚畬鎴愶紝涓氬姟灞傚彧璐熻矗鍦╯ession鍐呮墽琛屼箣銆傝繖鏍蜂唬鐮佸氨鍙斁涔嬪洓嫻瘋岀殕鍑嗭紝閮芥棤欏諱慨鏀逛簡銆?br />
銆銆鐒惰孲pring鍜孒ibernate3鐨凞etachedCriteria鏈変笉鍏煎鐨勯棶棰橈紝鍥犳鍦⊿pring鐜涓嬮潰浣跨敤Hibernate3闇瑕佹敞鎰忥細

銆銆Spring鐨凥ibernateTemplate鎻愪緵浜咹ibernate鐨勫畬緹庡皝瑁咃紝鍗抽氳繃鍖垮悕綾誨疄鐜板洖璋冿紝鏉ヤ繚璇丼ession鐨勮嚜鍔ㄨ祫婧愮鐞嗗拰浜嬪姟鐨勭鐞嗐傚叾涓牳蹇冩柟娉曟槸錛?

銆銆java浠g爜:

HibernateTemplate.execute(new HibernateCallback() {
銆public Object doInHibernate(Session session) throws HibernateException {
銆銆....
銆}
}

銆銆鍥炶皟鏂規硶鎻愪緵浜唖ession浣滀負鍙傛暟錛屾湁浜唖ession錛屽氨鍙互鑷敱鐨勪嬌鐢℉ibernate API緙栫▼浜嗐備嬌鐢ㄤ簡spring鐨勪箣鍚庯紝浠g爜淇敼濡備笅錛?

銆銆web灞備唬鐮侊細

銆銆java浠g爜:

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.createAlias("employees", "e").add(Restrictions.eq("name", "department")).add(Restrictions.gt(("e.age"), new Integer(20)));
departmentManager.findByCriteria(detachedCriteria);

銆銆鏋勯燿etachedCriteria錛屼綔涓哄弬鏁頒紶閫掔粰departmentManager

銆銆涓氬姟灞備唬鐮佷嬌鐢╯pring錛孌epartmentManager鐨刦indByCriteria濡備笅錛?

銆銆java浠g爜:

public List findByCriteria(final DetachedCriteria detachedCriteria) {
銆return (List) getHibernateTemplate().execute(new HibernateCallback() {
銆銆public Object doInHibernate(Session session) throws HibernateException {
銆銆銆Criteria criteria = detachedCriteria.getExecutableCriteria(session);
銆銆銆return criteria.list();
銆銆}
銆});
}

銆銆瀹為檯涓婁篃灝辨槸錛?

銆銆java浠g爜:

Criteria criteria = detachedCriteria.getExecutableCriteria(session);
return criteria.list();

銆銆鑰屽凡

銆銆浣嗘槸璇ョ▼搴忎唬鐮佹墽琛岋紝浼氭姏鍑哄己鍒剁被鍨嬭漿鎹㈠紓甯革紒

銆銆鎴戣窡韙簡涓涓媠pring鍜孒ibernate婧愪唬鐮侊紝鍘熷洜濡備笅錛?

銆銆spring鐨凥ibernateTemplate鐨別xecute鏂規硶鎻愪緵鐨勫洖璋冩帴鍙e叿鏈塖ession浣滀負鍙傛暟錛屼絾鏄疄闄呬笂錛岄粯璁ゆ儏鍐典笅錛孒ibernateTemplate浼犻掔粰鍥炶皟鎺ュ彛鐨剆ession騫朵笉鏄痮rg.hibernate.impl.SessionImpl綾伙紝鑰屾槸SessionImpl綾葷殑涓涓狿roxy綾匯備箣鎵浠ユ浛鎹㈡垚涓轟竴涓狿roxy綾伙紝HibernateTemplate鐨勬敞閲婅鏄庯紝Proxy鎻愪緵浜嗕竴浜涢澶栫殑鍔熻兘錛屽寘鎷嚜鍔ㄨ緗瓹achable錛孴ransaction鐨勮秴鏃舵椂闂達紝Session璧勬簮鐨勬洿縐瀬鐨勫叧闂瓑絳夈?

銆銆java浠g爜:

private boolean exposeNativeSession = false;
...

銆銆execute鏂規硶鍐呴儴錛?

Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));

銆銆浣嗘槸閬楁喚鐨勬槸錛孒ibernate鐨凞etachedCriteria鐨剆etExecutableCriteria鏂規硶鍗磋姹傚皢session鍙傛暟寮哄埗杞負SessionImpl錛屼絾鏄痵pring浼犺繃鏉ョ殑鍗存槸涓涓狿roxy綾伙紝鍥犳灝辨姤閿欎簡銆?

銆銆java浠g爜:

public Criteria getExecutableCriteria(Session session) {
銆impl.setSession( (SessionImpl) session ); // 瑕佹眰SessionImpl錛孲pring浼犻掔殑鏄疨roxy
銆return impl;
}

銆銆瑙e喅鏂規硶錛岀姝pring鐨凥ibernateTemplate浼犻扨roxy綾伙紝寮哄埗瑕佹眰瀹冧紶閫掔湡瀹炵殑SessionImpl綾伙紝鍗崇粰exexute鏂規硶澧炲姞涓涓弬鏁幫紝鎻愪緵鍙傛暟涓簍rue錛屽涓嬶細

銆銆java浠g爜:

public List findByCriteria(final DetachedCriteria detachedCriteria) {
銆return (List) getHibernateTemplate().execute(new HibernateCallback() {
銆銆public Object doInHibernate(Session session) throws HibernateException {
銆銆銆Criteria criteria = detachedCriteria.getExecutableCriteria(session);
銆銆銆return criteria.list();
銆銆}
銆}, true);
}


Ke 2007-12-05 11:10 鍙戣〃璇勮
]]>
鎵歸噺鎶撳彇http://m.tkk7.com/keweibo/articles/158584.htmlKeKeTue, 06 Nov 2007 08:19:00 GMThttp://m.tkk7.com/keweibo/articles/158584.htmlhttp://m.tkk7.com/keweibo/comments/158584.htmlhttp://m.tkk7.com/keweibo/articles/158584.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/158584.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/158584.htmlHibernate鍙互鍏呭垎鏈夋晥鐨勪嬌鐢ㄦ壒閲忔姄鍙栵紙鎵歸噺绔嬪嵆鍔犺澆鍜?span style="color: #0000ff">鎵歸噺寤惰繜鍔犺澆錛夛紝涔熷氨鏄錛屽鏋滀粎涓涓闂唬鐞嗭紙鎴栭泦鍚堬級錛岄偅涔圚ibernate灝嗕笉杞藉叆鍏朵粬鏈疄渚嬪寲鐨勪唬鐞嗐?鎵歸噺鎶撳彇鏄歡榪熸煡璇㈡姄鍙栫殑浼樺寲鏂規錛屼綘鍙互鍦ㄤ袱縐嶆壒閲忔姄鍙栨柟妗堜箣闂磋繘琛岄夋嫨錛氬湪綾葷駭鍒拰闆嗗悎綰у埆銆?

涓瀵瑰銆佸瀵瑰錛堟湯绔負澶氾級鐨勬儏鍐碉細鍦ㄩ泦鍚堢殑閰嶇疆涓緗紝浠?set 涓轟緥錛屽涓嬫墍紺猴細 

        <set name="students" inverse="true" cascade="all" lazy="false" batch-size="2" ><!-- 涓瀵瑰鐨勫歡榪熷姞杞借緗?-->
            <key>
                <column name="TEAMID" length="32" not-null="true" />
            </key>
            <one-to-many class="edu.dgut.ke.model.Student" />
        </set>

 涓瀵逛竴銆佸瀵逛竴錛堟湯绔負涓錛夌殑鎯呭喌錛氬鏋滆瀵規湯绔負涓鐨勫叧鑱旇緗壒閲忓姞杞斤紝瑕佸湪“涓”榪欑鐨勯厤緗枃浠朵腑榪涜璁劇疆錛屾瘮濡傚鐢熷韜喚璇侊紝瑕佸疄鐜板鐝駭鐨勬壒閲忓姞杞斤紝搴旇緗涓?br />                 <class name="edu.dgut.ke.model.Certificate" table="CERTIFICATE" lazy="true" batch-size="10" >

嫻嬭瘯渚嬪瓙

Session session = HibernateSessionFactory.getSession();
  List list = session.createQuery("from Student").list();
  HibernateSessionFactory.closeSession();
錛圫tudent瀵笴ertificate鏄噰鐢ㄧ珛鍗沖姞杞界瓥鐣ワ級
鎺у埗鍙拌緭鍑?/u>

Hibernate: select student0_.ID as ID0_, student0_.cardId as cardId0_, student0_.TEAMID as TEAMID0_, student0_.STUDENTNAME as STUDENTN4_0_ from STUDENT student0_
Hibernate: select certificat0_.ID as ID1_0_, certificat0_.`DESCRIBE` as DESCRIBE2_1_0_ from CERTIFICATE certificat0_ where certificat0_.ID in (?, ?, ?, ?, ?, ?)


Ke 2007-11-06 16:19 鍙戣〃璇勮
]]>
澶栬繛鎺ヤ笌棰勫厛鎶撳彇鐨勫尯鍒?鎽樻妱浜巋ibernate寮鍙戝強鏁村悎搴旂敤澶у叏) http://m.tkk7.com/keweibo/articles/158559.htmlKeKeTue, 06 Nov 2007 07:08:00 GMThttp://m.tkk7.com/keweibo/articles/158559.htmlhttp://m.tkk7.com/keweibo/comments/158559.htmlhttp://m.tkk7.com/keweibo/articles/158559.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/158559.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/158559.html鍋囪鏈変竴涓被A,瀹冩湁涓や釜灞炴roperty1鍜宲roperty2,鍒橦QL璇彞"from A as a left outer join a.property1"鏈変竴涓師鍒?-HQL璇彞蹇界暐閰嶇疆鏂囦歡鐨勯鍏堟姄鍙栫瓥鐣?/u>,榪欏彞璇濇湁涓や釜鎰忔?

1.涓嶇A綾誨property1鍦ㄩ厤緗枃浠墮噷鏄粈涔堢瓥鐣?鍙兘鏄鍏堟姄鍙?绔嬪嵆鎴栧歡榪熸绱?瀹冧滑閮藉け鏁?,榪欐椂閮介噰鐢℉QL鎸囧畾鐨勫乏澶栬繛鎺?宸﹀榪炴帴蹇呭畾浼氬垵濮嬪寲property1灞炴?鎴栧璞?,浣嗘槸濡傛灉閰嶇疆鏂囦歡閲屽property1鐨勬绱㈢瓥鐣ユ槸寤惰繜鍔犺澆,A綾誨緱 鍒板properyt1鐨勫紩鐢?涓轟簡寰楀埌榪欎釜寮曠敤,闇瑕佸啀嬈″彂閫佷竴鏉QL璇彞鏉ョ‘绔嬭繖縐嶅紩鐢ㄥ叧緋?榪欑鎯呭喌鍦╬roperty1涓洪泦鍚堟椂緇忓父鍑虹幇.

2.A綾誨湪閰嶇疆鏂囦歡涓緗殑瀵筽roperty2鐨勯鍏堟姄鍙栫瓥鐣ュ皢琚拷鐣?/strong>(涓嶇榪欎釜絳栫暐鏄痜etch鎴栨槸select),瀵筽roperty2鏈夊獎鍝嶇殑璁劇疆鏄珛鍗沖拰寤惰繜鍔犺澆,hibernate鍙湅寰楀埌榪欎袱縐嶇瓥鐣?鎵浠ュ湪浣跨敤璇彞"from A as a left outer join a.property1"鏃?property2鐨勫姞杞界瓥鐣ュ皢浠呯敱lazy="true"鎴栬呮槸lazy="false"鏉ュ喅瀹?nbsp;


Team.hbm.xml 
...    ...
       <set name="students" inverse="true" cascade="all" lazy="true" fetch="join"><!-- 涓瀵瑰鐨勫歡榪熷姞杞借緗?-->
            <key>
                <column name="TEAMID" length="32" not-null="true" />
            </key>
            <one-to-many class="edu.dgut.ke.model.Student" />
        </set>
...    ...
Student.hbm.xml
...    ...
        <many-to-one name="certificate"
         class="edu.dgut.ke.model.Certificate"
         unique="true"
         column="cardId"
         cascade="all"
         lazy="false"
         fetch="join">
        </many-to-one>
        <many-to-one name="team" class="edu.dgut.ke.model.Team" fetch="join">
            <column name="TEAMID" length="32" not-null="true" />
        </many-to-one>
...    ...
嫻嬭瘯浠g爜
  Session session = HibernateSessionFactory.getSession();
  List list = session.createQuery("from Student as s left join s.team").list();
  HibernateSessionFactory.closeSession();
  //list 鍖呮嫭涓や釜闀垮害涓?鐨勬暟緇?姣忎竴涓暟緇勪腑鍖呮嫭涓涓鐢熷璞″拰涓涓彮綰у璞?br />   Object[] stuAndTeam1 = (Object[]) list.get(0);
  Student stu = (Student) stuAndTeam1[0];
  System.out.println(stu.getStudentname());
  System.out.println(stu.getTeam().getTeamname());
  System.out.println(stu.getTeam().getStudents().size());

鎺у埗鍙拌緭鍑?/u>
Hibernate: select student0_.ID as ID0_0_, team1_.ID as ID2_1_, student0_.cardId as cardId0_0_, student0_.TEAMID as TEAMID0_0_, student0_.STUDENTNAME as STUDENTN4_0_0_, team1_.TEAMNAME as TEAMNAME2_1_ from STUDENT student0_ left outer join TEAM team1_ on student0_.TEAMID=team1_.ID
Hibernate: select certificat0_.ID as ID1_0_, certificat0_.`DESCRIBE` as DESCRIBE2_1_0_ from CERTIFICATE certificat0_ where certificat0_.ID=?
Hibernate: select certificat0_.ID as ID1_0_, certificat0_.`DESCRIBE` as DESCRIBE2_1_0_ from CERTIFICATE certificat0_ where certificat0_.ID=?
寮犱笁
05璁$畻鏈哄簲鐢ㄦ妧鏈?1)鐝?br /> Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: edu.dgut.ke.model.Team.students, no session or session was closed
 at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
 at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
 at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
 at org.hibernate.collection.PersistentSet.size(PersistentSet.java:114)
 at edu.dgut.ke.test.chapter3.Query.main(Query.java:44)


娉ㄦ剰錛氬湪閰嶇疆鏂囦歡涓緗殑媯绱㈢瓥鐣ュ彧鑳藉獎鍝嶅埌session.get()鎴栬卻ession.load()鏂規硶錛屽浜庣洿鎺ヤ嬌鐢?br /> session.createQuery("from Student as s left join s.team")榪欑鎸囨槑HQL鐨勬柟寮忥紝灝嗗拷鐣ラ厤緗枃浠剁殑棰勫厛鎶撳彇媯绱㈢瓥鐣ワ紙瀛︾敓瀵圭彮綰х殑棰勫厛媯绱㈢瓥鐣ヨ蹇界暐錛夛紝榪欒鍙ユ寚鏄庝簡瀛︾敓鍜岀彮綰т箣闂翠嬌鐢ㄥ乏澶栬繛鎺ョ瓥鐣ワ紝鍥犳鎺у埗鍙拌緭鍑虹殑絎竴鏉¤鍙ワ紝鍗充嬌鐢ㄤ簡宸﹀榪炴帴寰楀埌浜?涓璞★細2涓鐢熷拰1涓彮綰с?br />         寰楀埌浜嗗鐢熷璞′箣鍚庯紝瀛︾敓浠ヨ韓浠借瘉鐨勯鍏堟姄鍙栫瓥鐣ュけ鏁堬紝鎵浠ヤ細鏈夌浜屾潯鍜岀涓夋潯璇彞錛屽嵆浣跨敤浜嗙珛鍗沖姞杞?br />         寰楀埌鐝駭瀵硅薄鍚庯紝鐢變簬鐝駭瀵瑰鐢熼噰鐢ㄥ歡榪熷姞杞斤紙榪欎釜絳栫暐涓嶄細琚拷鐣ワ級錛屼簬鏄彮綰х殑瀛︾敓闆嗗悎騫舵湭寰楀埌鍒濆鍖栵紝鎵浠ュ綋杈撳嚭瀛︾敓鐨勪漢鏁幫紝灝辨姏鍑轟簡渚嬪銆?

Ke 2007-11-06 15:08 鍙戣〃璇勮
]]>
Hibernate閰嶇疆灞炴?錛坔ibernate.max_fetch_depth錛?/title><link>http://m.tkk7.com/keweibo/articles/158537.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 06 Nov 2007 06:04:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/158537.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/158537.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/158537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/158537.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/158537.html</trackback:ping><description><![CDATA[ Hibernate閰嶇疆灞炴? <table summary="Hibernate閰嶇疆灞炴? border="1"> <colgroup> <col> <col></colgroup> <thead> <tr> <th>灞炴у悕</th> <th>鐢ㄩ?/th> </tr> </thead> <tbody> <tr> <td><tt class="literal">hibernate.dialect</tt></td> <td><span id="r7zzvzp" class="emphasis"><em>Hibernate<tt class="literal">鏂硅█錛圖ialect錛?/tt>鐨勭被鍚?- 鍙互璁〩ibernate浣跨敤鏌愪簺鐗瑰畾鐨勬暟鎹簱騫沖彴鐨勭壒鎬?/em></span> <p><span id="79nzbz9" class="strong">鍙栧?</span> <tt class="literal">full.classname.of.Dialect</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.default_schema</tt></td> <td><span id="hx7fxv3" class="emphasis"><em>鍦ㄧ敓鎴愮殑SQL涓紝scheml/tablespace鐨勫叏闄愬畾鍚?/em></span> <p><span id="zprnn7z" class="strong">鍙栧?</span> <tt class="literal">SCHEMA_NAME</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.session_factory_name</tt></td> <td><span id="pjdnvd9" class="emphasis"><em>鎶?tt class="literal">SessionFactory</tt>緇戝畾鍒癑NDI涓幓.</em></span> <p><span id="7rndf79" class="strong">鍙栧?</span> <tt class="literal">jndi/composite/name</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.use_outer_join</tt></td> <td><span id="lbz1fjj" class="emphasis"><em>鍏佽浣跨敤澶栬繛鎺ユ姄鍙?</em></span> <p><span id="zjztl7d" class="strong">鍙栧?</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p> </td> </tr> <tr> <td><tt class="literal" style="color: #0000ff">hibernate.max_fetch_depth</tt></td> <td style="color: #0000ff"><span id="vdtvdrd" class="emphasis"><em>璁劇疆澶栬繛鎺ユ姄鍙栨爲鐨勬渶澶ф繁搴?/em></span> <p><span id="79pppln" class="strong">鍙栧?</span> 寤鴻璁劇疆涓?tt class="literal">0</tt>鍒?tt class="literal">3</tt>涔嬮棿 </p> </td> </tr> <tr> <td><tt class="literal">hibernate.jdbc.fetch_size</tt></td> <td><span id="n1dddtv" class="emphasis"><em>涓涓潪闆跺鹼紝鐢ㄦ潵鍐沖畾JDBC鐨勮幏鍙栭噺澶у皬銆?浼氳皟鐢╟alls <tt class="literal">Statement.setFetchSize()</tt>).</em></span></td> </tr> <tr> <td><tt class="literal">hibernate.jdbc.batch_size</tt></td> <td><span id="xjttvnj" class="emphasis"><em>涓涓潪闆跺鹼紝浼氬紑鍚疕ibernate浣跨敤JDBC2鐨勬壒閲忔洿鏂板姛鑳?/em></span> <p><span id="fhzzhhp" class="strong">鍙栧?</span> 寤鴻鍊煎湪 <tt class="literal">5</tt> 鍜?<tt class="literal">30</tt>涔嬮棿銆?</p> </td> </tr> <tr> <td><tt class="literal">hibernate.jdbc.use_scrollable_resultset</tt></td> <td><span id="zll7p9h" class="emphasis"><em>鍏佽Hibernate浣跨敤JDBC2鎻愪緵鐨勫彲婊氬姩緇撴灉闆嗐傚彧鏈夊湪浣跨敤鐢ㄦ埛鑷鎻愪緵鐨勮繛鎺ユ椂錛岃繖涓弬鏁版墠鏄繀闇鐨勩傚惁鍒橦ibernate浼氫嬌鐢ㄨ繛鎺ョ殑鍏冩暟鎹?metadata)銆?/em></span> <p><span id="3jttz99" class="strong">鍙栧?</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.jdbc.use_streams_for_binary</tt></td> <td><span id="d7bjbtj" class="emphasis"><em>鍦ㄤ粠JDBC璇誨啓<tt class="literal">binary錛堜簩榪涘埗錛?/tt>鎴栬?tt class="literal">serializable錛堝彲搴忓垪鍖栵級</tt>綾誨瀷鏃?鏄惁浣跨敤stream(嫻侊級</em></span>. 榪欐槸涓涓郴緇熺駭鍒殑灞炴с? <p><span id="9d999l3" class="strong">鍙栧?</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.cglib.use_reflection_optimizer</tt></td> <td><span id="tj7xhzx" class="emphasis"><em>鏄惁浣跨敤CGLIB鏉ヤ唬鏇胯繍琛屾椂鍙嶅皠鎿嶄綔銆傦紙緋葷粺綰у埆灞炴э紝榛樿涓哄湪鍙兘鏃墮兘浣跨敤CGLIB錛?鍦ㄨ皟璇曠殑鏃跺欐湁鏃跺欎嬌鐢ㄥ弽灝勪細鏈夌敤銆?/em></span> <p><span id="7jnfn9l" class="strong">鍙栧?</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.jndi.<span id="xnf77fn" class="emphasis"><em><propertyName></em></span></tt></td> <td><span id="1b9xf9f" class="emphasis"><em>鎶?tt class="literal">propertyName</tt>榪欎釜灞炴т紶閫掑埌JNDI <tt class="literal">InitialContextFactory</tt>鍘?/em></span> (鍙? </td> </tr> <tr> <td><tt class="literal">hibernate.connection.isolation</tt></td> <td><span id="ll7z79h" class="emphasis"><em>浜嬪姟闅旂綰у埆</em></span> (鍙? <p><span id="xvp7nh3" class="strong">鍙栧?</span> <tt class="literal">1, 2, 4, 8</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.connection.<span id="xnfvxxx" class="emphasis"><em><propertyName></em></span></tt></td> <td><span id="nxxbj7x" class="emphasis"><em>鎶?<tt class="literal">propertyName</tt>榪欎釜JDBC 灞炴т紶閫掑埌<tt class="literal">DriverManager.getConnection()</tt>鍘?/em></span>. </td> </tr> <tr> <td><tt class="literal">hibernate.connection.provider_class</tt></td> <td><span id="pxr1fhh" class="emphasis"><em>鎸囧畾涓涓嚜瀹氫箟鐨?tt class="literal">ConnectionProvider</tt>綾誨悕</em></span> <p><span id="jt7nfpl" class="strong">鍙栧?</span> <tt class="literal">classname.of.ConnectionProvider</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.cache.provider_class</tt></td> <td><span id="n9dnnx3" class="emphasis"><em>鎸囧畾涓涓嚜瀹氫箟鐨?tt class="literal">CacheProvider</tt>緙撳瓨鎻愪緵鑰呯殑綾誨悕</em></span> <p><span id="5t7v97v" class="strong">鍙栧?</span> <tt class="literal">classname.of.CacheProvider</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.transaction.factory_class</tt></td> <td><span id="7vx9fp3" class="emphasis"><em>鎸囧畾涓涓嚜瀹氫箟鐨?tt class="literal">TransactionFactory</tt>綾誨悕錛孒ibernate Transaction API灝嗕細浣跨敤.</em></span> <p><span id="7x7n9hj" class="strong">鍙栧?</span> <tt class="literal">classname.of.TransactionFactory</tt> </p> </td> </tr> <tr> <td><tt class="literal">jta.UserTransaction</tt></td> <td><span id="9zbf9l9" class="emphasis"><em><tt class="literal">JTATransactionFactory</tt> 鐢ㄦ潵鑾峰彇JTA <tt class="literal">UserTransaction</tt>鐨凧NDI鍚?</em></span> <p><span id="fn9rjh7" class="strong">鍙栧?</span> <tt class="literal">jndi/composite/name</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.transaction.manager_lookup_class</tt></td> <td><span id="bvhxzhn" class="emphasis"><em><tt class="literal">TransactionManagerLookup</tt>鐨勭被鍚?- 褰撳湪JTA鐜涓紝JVM綰у埆鐨勭紦瀛樿鎵撳紑鐨勬椂鍊欎嬌鐢?</em></span> <p><span id="vxjzr7x" class="strong">鍙栧?</span> <tt class="literal">classname.of.TransactionManagerLookup</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.query.substitutions</tt></td> <td><span id="xhjj7tv" class="emphasis"><em>鎶奌ibernate鏌ヨ涓殑涓浜涚煭璇槧灝勪負SQL鐭銆傦紙姣斿璇寸煭璇彲鑳芥槸鍑芥暟鎴栬呭瓧絎︼級 .</em></span> <p><span id="hvdph7t" class="strong">鍙栧?</span> <tt class="literal">hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.show_sql</tt></td> <td><span id="rljtbhp" class="emphasis"><em>鎶婃墍鏈夌殑SQL璇彞閮借緭鍑哄埌鎺у埗鍙?鍙互浣滀負log鍔熻兘鐨勪竴涓浛浠?.</em></span> <p><span id="nt1zpjx" class="strong">鍙栧?</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p> </td> </tr> <tr> <td><tt class="literal">hibernate.hbm2ddl.auto</tt></td> <td><span id="txr79fd" class="emphasis"><em>鑷姩杈撳嚭schema鍒涘緩DDL璇彞.</em></span> <p><span id="53z1v3b" class="strong">鍙栧?</span> <tt class="literal">update</tt> | <tt class="literal">create</tt> | <tt class="literal">create-drop</tt> </p> </td> </tr> </tbody> </table> <tt class="literal" style="color: #0000ff">hibernate.max_fetch_depth</tt><span style="color: #0000ff">=0鏃訛紝琛ㄧず涓嶅厑璁稿榪炴帴錛岃繖鏃剁殑棰勫厛鎶撳彇絳栫暐灝辯畻璁劇疆浜嗕篃鏄け鏁堢殑錛屽彇鑰屼唬涔嬬殑鏄珛鍗沖姞杞界瓥鐣ャ?/span> <img src ="http://m.tkk7.com/keweibo/aggbug/158537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-11-06 14:04 <a href="http://m.tkk7.com/keweibo/articles/158537.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤Hibernate.initialize(Object obj)鏂規硶鍒濆鍖栦竴涓唬鐞嗗璞℃垨鑰呴泦鍚?/title><link>http://m.tkk7.com/keweibo/articles/157978.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 03 Nov 2007 14:17:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/157978.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/157978.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/157978.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/157978.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/157978.html</trackback:ping><description><![CDATA[<p>.............</p> <p>public class Query {</p> <p><br />  public static void main(String[] args) {<br /> <br />   //鎵撳紑Session鍙栧緱Student瀵硅薄,鍚庡叧闂璖ession<br />   Student student = getStudent();<br />   //鎵撳紑鍙︿竴涓猄ession.璋冪敤update()鏂規硶,鍥犱負鍦ㄤ笂闈㈢殑Session鍏抽棴鍚?<br />   //student瀵硅薄鎴愪簡鑴辯鐘舵?鍦ㄥ彟涓涓猄ession涓棤娉曞垵濮嬪寲涓涓劚綆″璞?蹇呴』閲嶆柊鍏寵仈<br />   HibernateSessionFactory.getSession().update(student.getTeam());<br />   //浣跨敤initialize鏂規硶鍒濆鍖栦竴涓唬鐞嗗璞℃垨鑰呴泦鍚?姝や唬鐞嗗茍涓嶈兘淇濊瘉鍐呴儴宓屽鐨勫璞℃垨鑰呴泦鍚堣鍒濆鍖?<br />   Hibernate.initialize(student.getTeam());<br />   System.out.println(student.getTeam().getTeamname());<br />   HibernateSessionFactory.closeSession();<br />  }</p> <p>... <br />  public static Student getStudent() {<br />   StudentDAO studentDAO = new StudentDAO();<br />   <br />   Session session = studentDAO.getSession();<br />   Student student = (Student) session.get(Student.class, "2c9ab2d516056609011605660e7e0001");<br />   session.close();<br />   return student;<br />  }<br /> ... <br /> }<br /> </p> <img src ="http://m.tkk7.com/keweibo/aggbug/157978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-11-03 22:17 <a href="http://m.tkk7.com/keweibo/articles/157978.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate寤惰繜鍔犺澆http://m.tkk7.com/keweibo/articles/157970.htmlKeKeSat, 03 Nov 2007 13:13:00 GMThttp://m.tkk7.com/keweibo/articles/157970.htmlhttp://m.tkk7.com/keweibo/comments/157970.htmlhttp://m.tkk7.com/keweibo/articles/157970.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/157970.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/157970.html
Team.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="edu.dgut.ke.model.Team" table="TEAM"  lazy ="true"  ><!-- 澶氬涓鐨勫歡榪熷姞杞借緗?-->
        <id name="id" type="java.lang.String">
            <column name="ID" length="32" />
            <generator class="uuid.hex" />
        </id>
        <property name="teamname" type="java.lang.String">
            <column name="TEAMNAME" length="32" not-null="true" unique="true" />
        </property>
        <set name="students" inverse="true" cascade="all" lazy="true" >  <!-- 涓瀵瑰鐨勫歡榪熷姞杞借緗?nbsp;-->
            <key>
                <column name="TEAMID" length="32" not-null="true" />
            </key>
            <one-to-many class="edu.dgut.ke.model.Student" />
        </set>
    </class>
</hibernate-mapping>

Certificate.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="edu.dgut.ke.model.Certificate" table="CERTIFICATE" lazy="true"  ><!-- 涓瀵逛竴鐨勫歡榪熷姞杞借緗?nbsp;-->

        <id name="id" type="java.lang.String">
            <column name="ID" length="32" />
            <generator class="uuid">
           
            </generator>
        </id>
        <property name="describe" type="java.lang.String">
            <column name="`DESCRIBE`" length="50" not-null="true" />
        </property>
        <one-to-one name="student"
         class="edu.dgut.ke.model.Student"
         constrained="true"  ><!-- 涓瀵逛竴鐨勫歡榪熷姞杞借緗?nbsp;-->

        </one-to-one>
    </class>
</hibernate-mapping>

Student.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="edu.dgut.ke.model.Student" table="STUDENT" lazy="true"  >
        <id name="id" type="java.lang.String">
            <column name="ID" length="32" />
            <generator class="uuid.hex" />
        </id>
        <many-to-one name="certificate"
         class="edu.dgut.ke.model.Certificate"
         unique="true"
         column="cardId"
         cascade="all"
         >
        </many-to-one>
        <many-to-one name="team" class="edu.dgut.ke.model.Team">
            <column name="TEAMID" length="32" not-null="true" />
        </many-to-one>
        <property name="studentname" type="java.lang.String">
            <column name="STUDENTNAME" length="16" not-null="true" unique="true" />
        </property>
    </class>
</hibernate-mapping>
娉ㄦ剰錛氬one-to-one 鍏崇郴榪涜寤惰繜鍔犺澆鍜屽叾浠栧叧緋葷浉姣旂◢寰湁浜涗笉鍚屻俶any-to-one 鐨勫歡榪熷姞杞芥槸鍦ㄩ厤緗枃浠剁殑class 鏍囩
涓婅緗?lazy="true" 錛宱ne-to-many 鍜?many-to-many 鐨勫歡榪熷姞杞芥槸鍦?set 鏍囩涓緗甽azy="true"銆傝宱ne-to-one 涓嶅彧瑕佸湪 classs
鏍囩璁劇疆 lazy="true"錛岃屼笖瑕佸湪one-to-one 鏍囩涓緗甤onstrained="true" 銆?br /> 濡傛灉涓嶈緗甤onstrained="true"錛屽垯涓瀵逛竴鏌ヨ浣跨敤榛樿鐨勯鍏堟姄鍙栫瓥鐣?fetch="join")銆?/strong>




Ke 2007-11-03 21:13 鍙戣〃璇勮
]]>
淇敼鑴辯(Detached)瀵硅薄http://m.tkk7.com/keweibo/articles/156713.htmlKeKeMon, 29 Oct 2007 08:15:00 GMThttp://m.tkk7.com/keweibo/articles/156713.htmlhttp://m.tkk7.com/keweibo/comments/156713.htmlhttp://m.tkk7.com/keweibo/articles/156713.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/156713.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/156713.html

寰堝紼嬪簭闇瑕佸湪鏌愪釜浜嬪姟涓幏鍙栧璞★紝鐒跺悗灝嗗璞″彂閫佸埌鐣岄潰灞傚幓鎿嶄綔錛屾渶鍚庡湪涓涓柊鐨勪簨鍔′繚瀛樻墍鍋氱殑淇敼銆?鍦ㄩ珮騫跺彂璁塊棶鐨勭幆澧冧腑浣跨敤榪欑鏂瑰紡錛岄氬父浣跨敤闄勫甫鐗堟湰淇℃伅鐨勬暟鎹潵淇濊瘉榪欎簺“闀?#8220;宸ヤ綔鍗曞厓涔嬮棿鐨勯殧紱匯?

Hibernate閫氳繃鎻愪緵浣跨敤Session.update()鎴?tt class="literal" style="color: #0000ff">Session.merge()鏂規硶 閲嶆柊鍏寵仈鑴辯瀹炰緥鐨勫姙娉曟潵鏀寔榪欑妯″瀷銆?

// in the first session
Cat cat = (Cat) firstSession.load(Cat.class, catId);
Cat potentialMate = new Cat();
firstSession.save(potentialMate);
// in a higher layer of the application
cat.setMate(potentialMate);
// later, in a new session
secondSession.update(cat);  // update cat
secondSession.update(mate); // update mate

濡傛灉鍏鋒湁catId鎸佷箙鍖栨爣璇嗙殑Cat涔嬪墠宸茬粡琚?tt class="literal">鍙︿竴Session(secondSession)瑁呰澆浜嗭紝 搴旂敤紼嬪簭榪涜閲嶅叧鑱旀搷浣?reattach)鐨勬椂鍊欎細鎶涘嚭涓涓紓甯搞?

濡傛灉浣犵‘瀹氬綋鍓峴ession娌℃湁鍖呭惈涓庝箣鍏鋒湁鐩稿悓鎸佷箙鍖栨爣璇嗙殑鎸佷箙瀹炰緥錛屼嬌鐢?tt class="literal">update()銆?濡傛灉鎯抽殢鏃跺悎騫朵綘鐨勭殑鏀瑰姩鑰屼笉鑰冭檻session鐨勭姸鎬侊紝浣跨敤merge()銆?/strong> 鎹㈠彞璇濊錛屽湪涓涓柊session涓氬父絎竴涓皟鐢ㄧ殑鏄?tt class="literal">update()鏂規硶錛屼互渚夸繚璇侀噸鏂板叧鑱旇劚綆?detached)瀵硅薄鐨勬搷浣滈鍏堣鎵ц銆?

甯屾湜鐩稿叧鑱旂殑鑴辯瀵硅薄錛堥氳繃寮曠敤“鍙埌杈?#8221;鐨勮劚綆″璞★級鐨勬暟鎹篃瑕佹洿鏂板埌鏁版嵁搴撴椂錛堝茍涓斾篃浠呬粎鍦ㄨ繖縐嶆儏鍐碉級錛?搴旂敤紼嬪簭闇瑕佸璇ョ浉鍏寵仈鐨勮劚綆″璞″崟鐙皟鐢?tt class="literal">update() 褰撶劧榪欎簺鍙互鑷姩瀹屾垚錛屽嵆閫氳繃浣跨敤浼犳挱鎬ф寔涔呭寲(transitive persistence)錛岃鐪?a title="11.11. 浼犳挱鎬ф寔涔呭寲(transitive persistence)" tppabs="http://www.hibernate.org/hib_docs/v3/reference/zh-cn/html/objectstate.html#objectstate-transitive">絎?nbsp;11.11 鑺?“浼犳挱鎬ф寔涔呭寲(transitive persistence)”銆?

lock()鏂規硶涔熷厑璁哥▼搴忛噸鏂板叧鑱旀煇涓璞″埌涓涓柊session涓娿備笉榪囷紝璇ヨ劚綆?detached)鐨勫璞″繀欏繪槸娌℃湁淇敼榪囩殑錛?

//just reassociate:
sess.lock(fritz, LockMode.NONE);
//do a version check, then reassociate:
sess.lock(izi, LockMode.READ);
//do a version check, using SELECT ... FOR UPDATE, then reassociate:
sess.lock(pk, LockMode.UPGRADE);

璇鋒敞鎰忥紝lock()鍙互鎼厤澶氱LockMode錛?鏇村淇℃伅璇烽槄璇籄PI鏂囨。浠ュ強鍏充簬浜嬪姟澶勭悊(transaction handling)鐨勭珷鑺傘傞噸鏂板叧鑱斾笉鏄?tt class="literal">lock()鐨勫敮涓鐢ㄩ斻?

鍏朵粬鐢ㄤ簬闀挎椂闂村伐浣滃崟鍏冪殑妯″瀷浼氬湪絎?nbsp;12.3 鑺?“涔愯騫跺彂鎺у埗(Optimistic concurrency control)”涓璁恒?

鏂囩珷鍑哄:http://docs.huihoo.com/framework/hibernate/reference-v3_zh-cn/objectstate.html

Ke 2007-10-29 16:15 鍙戣〃璇勮
]]>
Session緙撳瓨鏈哄埗 鎿嶇旱鎸佷箙鍖栧璞?http://m.tkk7.com/keweibo/articles/156578.htmlKeKeMon, 29 Oct 2007 01:21:00 GMThttp://m.tkk7.com/keweibo/articles/156578.htmlhttp://m.tkk7.com/keweibo/comments/156578.htmlhttp://m.tkk7.com/keweibo/articles/156578.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/156578.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/156578.htmlSession 鐨勭紦瀛?br />   Hibernate涓紦瀛樺垎涓轟袱縐嶏細涓綰х紦瀛?Session綰у埆)鍜屼簩綰х紦瀛?br /> (SessionFactory綰у埆)銆?br />    Session 鐨勪綔鐢?
    1)鍏呭綋钃勬按姹犵殑浣滅敤,鍑忓皯紼嬪簭璁塊棶鏁版嵁搴撶殑嬈℃暟.寰堝瀵硅薄鏁版嵁涓嶆槸緇忓父鏀瑰彉鐨?絎竴嬈¤闂繖浜涘璞℃椂,Hibernate浼氬皢瀹冧滑鏀?br /> 鍏ョ紦瀛樹腑,浠ュ悗鍙榪欎釜瀵硅薄娌℃湁鏀瑰姩榪?璁塊棶榪欎釜瀵硅薄鏃禜ibernate灝變笉浼氬幓鏁版嵁搴撻噷鍔犺澆瀹冪殑鏁版嵁,鑰屾槸浠庡唴瀛樹腑鐩存帴榪斿洖搴旂敤紼嬪簭,榪欐牱瀛愭晥鐜囧氨姣旇緝楂樹簡.
    2)淇濊瘉緙撳瓨涓殑鏁版嵁涓庢暟鎹簱鍚屾.緙撳瓨姣曠珶涓嶆槸鏁版嵁搴?瀹冪殑鏁版嵁鍙兘鍜屾暟鎹簱涓嶄竴鑷?榪欐椂Hibernate浼氳礋璐e皢緙撳瓨涓殑鏁版嵁鍚屾鍒版暟鎹簱.褰撶劧榪欒鍙傜収FlushMode鐨勫叿浣撹緗?
   Hibernate鍚戞垜浠彁渚涚殑涓昏鐨勬搷綰墊暟鎹簱鐨勬帴鍙?Session灝辨槸鍏朵腑鐨勪竴涓?瀹冩彁渚涗簡鍩烘湰鐨勫,鍒?鏀?鏌ユ柟娉?鑰屼笖鍏鋒湁涓涓紦瀛樻満鍒?鑳藉鎸夌収鏌愪釜鏃墮棿鐐?鎸夌収緙撳瓨涓殑鎸佷箙鍖栧璞″睘鎬х殑鍙樺寲鏉ユ洿鏂版暟鎹簱,鐫灝辨槸Session鐨勭紦瀛樻竻鐞嗚繃紼?鍦℉ibernate涓璞″垎涓轟笁涓姸鎬?涓存椂,鎸佷箙鍖?娓哥.濡傛灉鎴戜滑甯屾湜JAVA閲岀殑涓涓璞′竴鐩村瓨鍦?灝卞繀欏繪湁涓涓彉閲忎竴鐩村紩鐢ㄧ潃榪欎釜瀵硅薄.褰撹繖涓彉閲忔病浜?瀵硅薄涔熷氨琚獼VM鍥炴敹浜?褰撶劧榪欎釜鏄渶鍩烘湰鐨勫父璇嗕簡.褰揝ession鐨剆ave()鏂規硶鎸佷箙鍖栦簡涓涓璞$殑鏃跺?鍗充嬌榪欎釜瀵硅薄鐨勫紩鐢ㄥ彉閲忓皬鏃朵簡.榪欎釜瀵硅薄涔熶緷鐒跺瓨鍦?鍥犱負Sessoin閲屼繚瀛樹簡涓涓繖涓璞$殑寮曠敤,褰撶劧Session緙撳瓨琚竻絀?榪欎釜瀵硅薄灝監VER浜?鍦ㄨ繖涓璞′繚瀛樺湪Sessoin鐨勬椂鍊欏鏋滆皟鐢╨oad()鏂規硶璇曞浘鍘繪暟鎹簱涓姞杞戒竴涓璞?榪欎釜鏃跺橲ession浼氬厛鍒ゆ柇緙撳瓨涓湁娌℃湁榪欎釜瀵硅薄,濡傛灉鏈変簡,閭d箞灝變笉闇瑕佸幓鏁版嵁搴撳姞杞戒簡.榪欐牱鍙互鍑忓皯璁塊棶鏁版嵁搴撶殑棰戠巼,榪樺彲浠ヤ繚璇佺紦瀛樹腑鐨勫璞′簬鏁版嵁搴撶殑鍚屾.
      Session鏈変袱涓柟娉?涓涓猚ommit()浜嬪姟鎻愪氦鏂規硶,榪樻湁flush()鍒鋒柊緙撳瓨鏂規硶,閮芥湁鐫娓呯悊緙撳瓨鐨勪綔鐢?flush()榪涜緙撳瓨鐨勬竻鐞?鎵ц涓緋誨垪鐨凷QL璇彞,浣嗕笉浼氭彁浜や簨鍔?鑰宑ommit()鏂規硶浼氬厛璋冪敤flush()鏂規硶,鐒跺悗鍦ㄦ彁浜や簨鍔?Session榪樻湁涓涓柟娉曞氨鏄痵etFushMode()鏂規硶,鐢ㄦ埛璁懼畾娓呯悊緙撳瓨鐨勬椂闂寸偣,涓昏鏈変笅闈㈠嚑縐嶆ā寮?榛樿Flush.Mode.AUTO
      1)FlushMode.AUTO  Hibernate 鍒ゆ柇瀵硅薄鐨勫睘鎬ф槸鏇存敼,濡傛灉琚洿鏀硅繃鎴愪簡鑴忔暟鎹?鍒欎細鍦ㄤ笅涓涓煡璇㈣鍙ュ墠灝嗘洿鏂版鏀瑰姩浠ヤ繚璇佸悓姝ユ暟鎹簱.
      2)FlushMode.COMMIT  鍦ㄤ簨鍔$粨鏉熶箣鍓嶆竻鐞哠ession鐨勭紦瀛?鍏跺畠浠諱綍鏃跺欓兘涓嶆竻鐞嗙紦瀛?br />       3)FlushMode.NEVER  闄ら潪寮哄埗璋冪敤Session鐨刦lush()鏂規硶,鍚﹀垯姘鎬笉娓呯悊緙撳瓨
      4)FlushMode.ALWAYS 鍦ㄦ瘡涓涓煡璇㈣鍙ュ墠閮借皟鐢╢lush()鏂規硶榪涜緙撳瓨娓呯悊.
瀵硅薄鐨勪復鏃剁姸鎬?鍒氱敤new鍒涘緩瀵硅薄鐨勬椂鍊?瀹冭繕娌℃湁琚寔涔呭寲,榪欎釜鏃跺欐槸涓存椂鐘舵?
瀵硅薄鐨勬寔涔呭寲鐘舵?宸茬粡琚姞鍏ュ埌Session鐨勭紦瀛樹腑,閫氬父鎵璇寸殑鎸佷箙鍖栧璞″氨鏄彧涓涓璞″湪榪欎釜鐘舵佺殑鏃跺?
瀵硅薄鐨勬父紱葷姸鎬?宸茬粡琚寔涔呭寲,浣嗘槸涓嶅睘浜嶴ession鐨勭紦瀛樼殑鏃跺欐槸娓哥鐘舵?



Ke 2007-10-29 09:21 鍙戣〃璇勮
]]>
搴旂敤Hibernate3鐨凞etachedCriteria瀹炵幇鍒嗛〉鏌ヨ http://m.tkk7.com/keweibo/articles/154776.htmlKeKeSun, 21 Oct 2007 13:51:00 GMThttp://m.tkk7.com/keweibo/articles/154776.htmlhttp://m.tkk7.com/keweibo/comments/154776.htmlhttp://m.tkk7.com/keweibo/articles/154776.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/154776.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/154776.htmlHibernate3鎻愪緵浜咲etachedCriteria錛屼嬌寰楁垜浠彲浠ュ湪Web灞傛瀯閫燿etachedCriteria錛岀劧鍚庤皟鐢ㄤ笟鍔″眰Bean錛岃繘琛屽姩鎬佹潯浠舵煡璇紝鏍規嵁榪欎竴鍔熻兘錛屾垜璁捐浜嗛氱敤鐨勬娊璞ean鍩虹被鍜屽垎欏電被鏀寔錛屼唬鐮佹潵鑷簬Quake Wang鐨刯avaeye-core鍖呯殑鐩稿簲綾伙紝鐒跺悗鍙堝仛浜嗗緢澶氫慨鏀廣?/p>

鍒嗛〉鏀寔綾伙細

java 浠g爜
  1. package com.javaeye.common.util;   
  2.   
  3. import java.util.List;   
  4.   
  5. public class PaginationSupport {   
  6.   
  7.     public final static int PAGESIZE = 30;   
  8.   
  9.     private int pageSize = PAGESIZE;   
  10.   
  11.     private List items;   
  12.   
  13.     private int totalCount;   
  14.   
  15.     private int[] indexes = new int[0];   
  16.   
  17.     private int startIndex = 0;   
  18.   
  19.     public PaginationSupport(List items, int totalCount) {   
  20.         setPageSize(PAGESIZE);   
  21.                 setTotalCount(totalCount);   
  22.         setItems(items);           
  23.         setStartIndex(0);   
  24.     }   
  25.   
  26.     public PaginationSupport(List items, int totalCount, int startIndex) {   
  27.                 setPageSize(PAGESIZE);   
  28.         setTotalCount(totalCount);   
  29.         setItems(items);           
  30.         setStartIndex(startIndex);   
  31.     }   
  32.   
  33.     public PaginationSupport(List items, int totalCount, int pageSize, int startIndex) {   
  34.                 setPageSize(pageSize);   
  35.         setTotalCount(totalCount);   
  36.         setItems(items);   
  37.         setStartIndex(startIndex);   
  38.     }   
  39.   
  40.     public List getItems() {   
  41.         return items;   
  42.     }   
  43.   
  44.     public void setItems(List items) {   
  45.         this.items = items;   
  46.     }   
  47.   
  48.     public int getPageSize() {   
  49.         return pageSize;   
  50.     }   
  51.   
  52.     public void setPageSize(int pageSize) {   
  53.         this.pageSize = pageSize;   
  54.     }   
  55.   
  56.     public int getTotalCount() {   
  57.         return totalCount;   
  58.     }   
  59.   
  60.     public void setTotalCount(int totalCount) {   
  61.         if (totalCount > 0) {   
  62.             this.totalCount = totalCount;   
  63.             int count = totalCount / pageSize;   
  64.             if (totalCount % pageSize > 0)   
  65.                 count++;   
  66.             indexes = new int[count];   
  67.             for (int i = 0; i < count; i++) {   
  68.                 indexes[i] = pageSize * i;   
  69.             }   
  70.         } else {   
  71.             this.totalCount = 0;   
  72.         }   
  73.     }   
  74.   
  75.     public int[] getIndexes() {   
  76.         return indexes;   
  77.     }   
  78.   
  79.     public void setIndexes(int[] indexes) {   
  80.         this.indexes = indexes;   
  81.     }   
  82.   
  83.     public int getStartIndex() {   
  84.         return startIndex;   
  85.     }   
  86.   
  87.     public void setStartIndex(int startIndex) {   
  88.         if (totalCount <= 0)   
  89.             this.startIndex = 0;   
  90.         else if (startIndex >= totalCount)   
  91.             this.startIndex = indexes[indexes.length - 1];   
  92.         else if (startIndex < 0)   
  93.             this.startIndex = 0;   
  94.         else {   
  95.             this.startIndex = indexes[startIndex / pageSize];   
  96.         }   
  97.     }   
  98.   
  99.     public int getNextIndex() {   
  100.         int nextIndex = getStartIndex() + pageSize;   
  101.         if (nextIndex >= totalCount)   
  102.             return getStartIndex();   
  103.         else  
  104.             return nextIndex;   
  105.     }   
  106.   
  107.     public int getPreviousIndex() {   
  108.         int previousIndex = getStartIndex() - pageSize;   
  109.         if (previousIndex < 0)   
  110.             return 0;   
  111.         else  
  112.             return previousIndex;   
  113.     }   
  114.   
  115. }  

 

鎶借薄涓氬姟綾?

java 浠g爜
  1. /**  
  2.  * Created on 2005-7-12  
  3.  */  
  4. package com.javaeye.common.business;   
  5.   
  6. import java.io.Serializable;   
  7. import java.util.List;   
  8.   
  9. import org.hibernate.Criteria;   
  10. import org.hibernate.HibernateException;   
  11. import org.hibernate.Session;   
  12. import org.hibernate.criterion.DetachedCriteria;   
  13. import org.hibernate.criterion.Projections;   
  14. import org.springframework.orm.hibernate3.HibernateCallback;   
  15. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  16.   
  17. import com.javaeye.common.util.PaginationSupport;   
  18.   
  19. public abstract class AbstractManager extends HibernateDaoSupport {   
  20.   
  21.     private boolean cacheQueries = false;   
  22.   
  23.     private String queryCacheRegion;   
  24.   
  25.     public void setCacheQueries(boolean cacheQueries) {   
  26.         this.cacheQueries = cacheQueries;   
  27.     }   
  28.   
  29.     public void setQueryCacheRegion(String queryCacheRegion) {   
  30.         this.queryCacheRegion = queryCacheRegion;   
  31.     }   
  32.   
  33.     public void save(final Object entity) {   
  34.         getHibernateTemplate().save(entity);   
  35.     }   
  36.   
  37.     public void persist(final Object entity) {   
  38.         getHibernateTemplate().save(entity);   
  39.     }   
  40.   
  41.     public void update(final Object entity) {   
  42.         getHibernateTemplate().update(entity);   
  43.     }   
  44.   
  45.     public void delete(final Object entity) {   
  46.         getHibernateTemplate().delete(entity);   
  47.     }   
  48.   
  49.     public Object load(final Class entity, final Serializable id) {   
  50.         return getHibernateTemplate().load(entity, id);   
  51.     }   
  52.   
  53.     public Object get(final Class entity, final Serializable id) {   
  54.         return getHibernateTemplate().get(entity, id);   
  55.     }   
  56.   
  57.     public List findAll(final Class entity) {   
  58.         return getHibernateTemplate().find("from " + entity.getName());   
  59.     }   
  60.   
  61.     public List findByNamedQuery(final String namedQuery) {   
  62.         return getHibernateTemplate().findByNamedQuery(namedQuery);   
  63.     }   
  64.   
  65.     public List findByNamedQuery(final String query, final Object parameter) {   
  66.         return getHibernateTemplate().findByNamedQuery(query, parameter);   
  67.     }   
  68.   
  69.     public List findByNamedQuery(final String query, final Object[] parameters) {   
  70.         return getHibernateTemplate().findByNamedQuery(query, parameters);   
  71.     }   
  72.   
  73.     public List find(final String query) {   
  74.         return getHibernateTemplate().find(query);   
  75.     }   
  76.   
  77.     public List find(final String query, final Object parameter) {   
  78.         return getHibernateTemplate().find(query, parameter);   
  79.     }   
  80.   
  81.     public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria) {   
  82.         return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, 0);   
  83.     }   
  84.   
  85.     public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int startIndex) {   
  86.         return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, startIndex);   
  87.     }   
  88.   
  89.     public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize,   
  90.             final int startIndex) {   
  91.         return (PaginationSupport) getHibernateTemplate().execute(new HibernateCallback() {   
  92.             public Object doInHibernate(Session session) throws HibernateException {   
  93.                 Criteria criteria = detachedCriteria.getExecutableCriteria(session);   
  94.                 int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();   
  95.                 criteria.setProjection(null);   
  96.                 List items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();   
  97.                 PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize, startIndex);   
  98.                 return ps;   
  99.             }   
  100.         }, true);   
  101.     }   
  102.   
  103.     public List findAllByCriteria(final DetachedCriteria detachedCriteria) {   
  104.         return (List) getHibernateTemplate().execute(new HibernateCallback() {   
  105.             public Object doInHibernate(Session session) throws HibernateException {   
  106.                 Criteria criteria = detachedCriteria.getExecutableCriteria(session);   
  107.                 return criteria.list();   
  108.             }   
  109.         }, true);   
  110.     }   
  111.   
  112.     public int getCountByCriteria(final DetachedCriteria detachedCriteria) {   
  113.         Integer count = (Integer) getHibernateTemplate().execute(new HibernateCallback() {   
  114.             public Object doInHibernate(Session session) throws HibernateException {   
  115.                 Criteria criteria = detachedCriteria.getExecutableCriteria(session);   
  116.                 return criteria.setProjection(Projections.rowCount()).uniqueResult();   
  117.             }   
  118.         }, true);   
  119.         return count.intValue();   
  120.     }   
  121. }   

 

鐢ㄦ埛鍦╳eb灞傛瀯閫犳煡璇㈡潯浠禿etachedCriteria錛屽拰鍙夌殑startIndex錛岃皟鐢ㄤ笟鍔ean鐨勭浉搴攆indByCriteria鏂規硶錛岃繑鍥炰竴涓狿aginationSupport鐨勫疄渚媝s銆?/p>

ps.getItems()寰楀埌宸插垎欏靛ソ鐨勭粨鏋滈泦
ps.getIndexes()寰楀埌鍒嗛〉绱㈠紩鐨勬暟緇?
ps.getTotalCount()寰楀埌鎬葷粨鏋滄暟
ps.getStartIndex()褰撳墠鍒嗛〉绱㈠紩
ps.getNextIndex()涓嬩竴欏電儲寮?
ps.getPreviousIndex()涓婁竴欏電儲寮?br />
鏂囩珷鍑哄:http://www.javaeye.com/topic/14657



Ke 2007-10-21 21:51 鍙戣〃璇勮
]]>
Hibernate Criteriahttp://m.tkk7.com/keweibo/articles/152160.htmlKeKeThu, 11 Oct 2007 14:13:00 GMThttp://m.tkk7.com/keweibo/articles/152160.htmlhttp://m.tkk7.com/keweibo/comments/152160.htmlhttp://m.tkk7.com/keweibo/articles/152160.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/152160.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/152160.html鍏鋒湁涓涓洿瑙傜殑銆佸彲鎵╁睍鐨勬潯浠舵煡璇PI鏄疕ibernate鐨勭壒鑹層?nbsp;   
  •   
  • 15.1. 鍒涘緩涓涓狢riteria 瀹炰緥   
  • org.hibernate.Criteria鎺ュ彛琛ㄧず鐗瑰畾鎸佷箙綾葷殑涓涓煡璇€係ession鏄?nbsp;Criteria瀹炰緥鐨勫伐鍘傘?nbsp;   
  •   
  • Criteria crit = sess.createCriteria(Cat.class);   
  • crit.setMaxResults(50);   
  • List cats = crit.list();   
  • 15.2. 闄愬埗緇撴灉闆嗗唴瀹?  
  • 涓涓崟鐙殑鏌ヨ鏉′歡鏄痮rg.hibernate.criterion.Criterion 鎺ュ彛鐨勪竴涓疄渚嬨俹rg.hibernate.criterion.Restrictions綾?nbsp;瀹氫箟浜嗚幏寰楁煇浜涘唴緗瓹riterion綾誨瀷鐨勫伐鍘傛柟娉曘?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.like("name""Fritz%") )   
  •     .add( Restrictions.between("weight", minWeight, maxWeight) )   
  •     .list();   
  • 綰︽潫鍙互鎸夐昏緫鍒嗙粍銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.like("name""Fritz%") )   
  •     .add( Restrictions.or(   
  •         Restrictions.eq( "age"new Integer(0) ),   
  •         Restrictions.isNull("age")   
  •     ) )   
  •     .list();   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.in( "name"new String[] { "Fritz""Izi""Pk" } ) )   
  •     .add( Restrictions.disjunction()   
  •         .add( Restrictions.isNull("age") )   
  •      .add( Restrictions.eq("age"new Integer(0) ) )   
  •      .add( Restrictions.eq("age"new Integer(1) ) )   
  •      .add( Restrictions.eq("age"new Integer(2) ) )   
  •     ) )   
  •     .list();   
  • Hibernate鎻愪緵浜嗙浉褰撳鐨勫唴緗甤riterion綾誨瀷(Restrictions 瀛愮被), 浣嗘槸灝ゅ叾鏈夌敤鐨勬槸鍙互鍏佽浣犵洿鎺ヤ嬌鐢⊿QL銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.sql("lower({alias}.name) like lower(?)""Fritz%", Hibernate.STRING) )   
  •     .list();   
  • {alias}鍗犱綅絎﹀簲褰撹鏇挎崲涓鴻鏌ヨ瀹炰綋鐨勫垪鍒悕銆?nbsp;   
  •   
  • Property瀹炰緥鏄幏寰椾竴涓潯浠剁殑鍙﹀涓縐嶉斿緞銆備綘鍙互閫氳繃璋冪敤Property.forName() 鍒涘緩涓涓狿roperty銆?nbsp;   
  •   
  • Property age = Property.forName("age");   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.disjunction()   
  •         .add( age.isNull() )   
  •      .add( age.eq( new Integer(0) ) )   
  •      .add( age.eq( new Integer(1) ) )   
  •      .add( age.eq( new Integer(2) ) )   
  •     ) )   
  •     .add( Property.forName("name").in( new String[] { "Fritz""Izi""Pk" } ) )   
  •     .list();   
  • 15.3. 緇撴灉闆嗘帓搴?  
  • 浣犲彲浠ヤ嬌鐢╫rg.hibernate.criterion.Order鏉ヤ負鏌ヨ緇撴灉鎺掑簭銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.like("name""F%")   
  •     .addOrder( Order.asc("name") )   
  •     .addOrder( Order.desc("age") )   
  •     .setMaxResults(50)   
  •     .list();   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Property.forName("name").like("F%") )   
  •     .addOrder( Property.forName("name").asc() )   
  •     .addOrder( Property.forName("age").desc() )   
  •     .setMaxResults(50)   
  •     .list();   
  • 15.4. 鍏寵仈   
  • 浣犲彲浠ヤ嬌鐢╟reateCriteria()闈炲父瀹規槗鐨勫湪浜掔浉鍏寵仈鐨勫疄浣撻棿寤虹珛 綰︽潫銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.like("name""F%")   
  •     .createCriteria("kittens")   
  •         .add( Restrictions.like("name""F%")   
  •     .list();   
  • 娉ㄦ剰絎簩涓?nbsp;createCriteria()榪斿洖涓涓柊鐨?nbsp;Criteria瀹炰緥錛岃瀹炰緥寮曠敤kittens 闆嗗悎涓殑鍏冪礌銆?nbsp;   
  •   
  • 鎺ヤ笅鏉ワ紝鏇挎崲褰㈡佸湪鏌愪簺鎯呭喌涓嬩篃鏄緢鏈夌敤鐨勩?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .createAlias("kittens""kt")   
  •     .createAlias("mate""mt")   
  •     .add( Restrictions.eqProperty("kt.name""mt.name") )   
  •     .list();   
  • (createAlias()騫朵笉鍒涘緩涓涓柊鐨?nbsp;Criteria瀹炰緥銆?    
  •   
  • Cat瀹炰緥鎵淇濆瓨鐨勪箣鍓嶄袱嬈℃煡璇㈡墍榪斿洖鐨刱ittens闆嗗悎鏄?nbsp;娌℃湁琚潯浠墮榪囨護鐨勩傚鏋滀綘甯屾湜鍙幏寰楃鍚堟潯浠剁殑kittens錛?nbsp;浣犲繀欏諱嬌鐢╮eturnMaps()銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .createCriteria("kittens""kt")   
  •         .add( Restrictions.eq("name""F%") )   
  •     .returnMaps()   
  •     .list();   
  • Iterator iter = cats.iterator();   
  • while ( iter.hasNext() ) {   
  •     Map map = (Map) iter.next();   
  •     Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);   
  •     Cat kitten = (Cat) map.get("kt");   
  • }   
  • 15.5. 鍔ㄦ佸叧鑱旀姄鍙?  
  • 浣犲彲浠ヤ嬌鐢╯etFetchMode()鍦ㄨ繍琛屾椂瀹氫箟鍔ㄦ佸叧鑱旀姄鍙栫殑璇箟銆?nbsp;   
  •   
  • List cats = sess.createCriteria(Cat.class)   
  •     .add( Restrictions.like("name""Fritz%") )   
  •     .setFetchMode("mate", FetchMode.EAGER)   
  •     .setFetchMode("kittens", FetchMode.EAGER)   
  •     .list();   
  • 榪欎釜鏌ヨ鍙互閫氳繃澶栬繛鎺ユ姄鍙杕ate鍜宬ittens銆?nbsp;鏌ョ湅絎?nbsp;19.1 鑺?nbsp;“ 鎶撳彇絳栫暐(Fetching strategies) ”鍙互鑾峰緱鏇村淇℃伅銆?nbsp;   
  •   
  • 15.6. 鏌ヨ紺轟緥   
  • org.hibernate.criterion.Example綾誨厑璁鎬綘閫氳繃涓涓粰瀹氬疄渚?nbsp;鏋勫緩涓涓潯浠舵煡璇€?nbsp;   
  •   
  • Cat cat = new Cat();   
  • cat.setSex('F');   
  • cat.setColor(Color.BLACK);   
  • List results = session.createCriteria(Cat.class)   
  •     .add( Example.create(cat) )   
  •     .list();   
  • 鐗堟湰灞炴с佹爣璇嗙鍜屽叧鑱旇蹇界暐銆傞粯璁ゆ儏鍐典笅鍊間負null鐨勫睘鎬у皢琚帓闄ゃ?nbsp;   
  •   
  • 浣犲彲浠ヨ嚜琛岃皟鏁碋xample浣夸箣鏇村疄鐢ㄣ?nbsp;   
  •   
  • Example example = Example.create(cat)   
  •     .excludeZeroes()           //exclude zero valued properties   
  •     .excludeProperty("color")  //exclude the property named "color"   
  •     .ignoreCase()              //perform case insensitive string comparisons   
  •     .enableLike();             //use like for string comparisons   
  • List results = session.createCriteria(Cat.class)   
  •     .add(example)   
  •     .list();   
  • 浣犵敋鑷沖彲浠ヤ嬌鐢╡xamples鍦ㄥ叧鑱斿璞′笂鏀劇疆鏉′歡銆?nbsp;   
  •   
  • List results = session.createCriteria(Cat.class)   
  •     .add( Example.create(cat) )   
  •     .createCriteria("mate")   
  •         .add( Example.create( cat.getMate() ) )   
  •     .list();   
  • 15.7. 鎶曞獎(Projections)銆佽仛鍚堬紙aggregation錛夊拰鍒嗙粍錛坓rouping錛?  
  • org.hibernate.criterion.Projections鏄?nbsp;Projection 鐨勫疄渚嬪伐鍘傘傛垜浠氳繃璋冪敤 setProjection()搴旂敤鎶曞獎鍒頒竴涓煡璇€?nbsp;   
  •   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.rowCount() )   
  •     .add( Restrictions.eq("color", Color.BLACK) )   
  •     .list();   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.projectionList()   
  •         .add( Projections.rowCount() )   
  •         .add( Projections.avg("weight") )   
  •         .add( Projections.max("weight") )   
  •         .add( Projections.groupProperty("color") )   
  •     )   
  •     .list();   
  • 鍦ㄤ竴涓潯浠舵煡璇腑娌℃湁蹇呰鏄懼紡鐨勪嬌鐢?nbsp;"group by" 銆傛煇浜涙姇褰辯被鍨嬪氨鏄瀹氫箟涓?nbsp;鍒嗙粍鎶曞獎錛屼粬浠篃鍑虹幇鍦⊿QL鐨刧roup by瀛愬彞涓?nbsp;   
  •   
  • 浣犲彲浠ラ夋嫨鎶婁竴涓埆鍚嶆寚媧劇粰涓涓姇褰憋紝榪欐牱鍙互浣挎姇褰卞艱綰︽潫鎴栨帓搴忔墍寮曠敤銆備笅闈㈡槸涓ょ涓嶅悓鐨勫疄鐜版柟寮忥細    
  •   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )   
  •     .addOrder( Order.asc("colr") )   
  •     .list();   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.groupProperty("color").as("colr") )   
  •     .addOrder( Order.asc("colr") )   
  •     .list();   
  • alias()鍜宎s()鏂規硶綆渚跨殑灝嗕竴涓姇褰卞疄渚嬪寘瑁呭埌鍙﹀涓涓?nbsp;鍒悕鐨凱rojection瀹炰緥涓傜畝鑰岃█涔嬶紝褰撲綘娣誨姞涓涓姇褰卞埌涓涓姇褰卞垪琛ㄤ腑鏃?nbsp;浣犲彲浠ヤ負瀹冩寚瀹氫竴涓埆鍚嶏細    
  •   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.projectionList()   
  •         .add( Projections.rowCount(), "catCountByColor" )   
  •         .add( Projections.avg("weight"), "avgWeight" )   
  •         .add( Projections.max("weight"), "maxWeight" )   
  •         .add( Projections.groupProperty("color"), "color" )   
  •     )   
  •     .addOrder( Order.desc("catCountByColor") )   
  •     .addOrder( Order.desc("avgWeight") )   
  •     .list();   
  • List results = session.createCriteria(Domestic.class"cat")   
  •     .createAlias("kittens""kit")   
  •     .setProjection( Projections.projectionList()   
  •         .add( Projections.property("cat.name"), "catName" )   
  •         .add( Projections.property("kit.name"), "kitName" )   
  •     )   
  •     .addOrder( Order.asc("catName") )   
  •     .addOrder( Order.asc("kitName") )   
  •     .list();   
  • 浣犱篃鍙互浣跨敤Property.forName()鏉ヨ〃紺烘姇褰憋細    
  •   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Property.forName("name") )   
  •     .add( Property.forName("color").eq(Color.BLACK) )   
  •     .list();   
  • List results = session.createCriteria(Cat.class)   
  •     .setProjection( Projections.projectionList()   
  •         .add( Projections.rowCount().as("catCountByColor") )   
  •         .add( Property.forName("weight").avg().as("avgWeight") )   
  •         .add( Property.forName("weight").max().as("maxWeight") )   
  •         .add( Property.forName("color").group().as("color" )   
  •     )   
  •     .addOrder( Order.desc("catCountByColor") )   
  •     .addOrder( Order.desc("avgWeight") )   
  •     .list();   
  • 15.8. 紱葷嚎(detached)鏌ヨ鍜屽瓙鏌ヨ   
  • DetachedCriteria綾諱嬌浣犲湪涓涓猻ession鑼冨洿涔嬪鍒涘緩涓涓煡璇紝騫朵笖鍙互浣跨敤浠繪剰鐨?nbsp;Session鏉ユ墽琛屽畠銆?nbsp;   
  •   
  • DetachedCriteria query = DetachedCriteria.forClass(Cat.class)   
  •     .add( Property.forName("sex").eq('F') );   
  •        
  • Session session = ....;   
  • Transaction txn = session.beginTransaction();   
  • List results = query.getExecutableCriteria(session).setMaxResults(100).list();   
  • txn.commit();   
  • session.close();   
  • DetachedCriteria涔熷彲浠ョ敤浠ヨ〃紺哄瓙鏌ヨ銆傛潯浠跺疄渚嬪寘鍚瓙鏌ヨ鍙互閫氳繃 Subqueries鎴栬匬roperty鑾峰緱銆?nbsp;   
  •   
  • DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)   
  • .setProjection( Property.forName("weight").avg() );   
  • session.createCriteria(Cat.class)   
  • .add( Property.forName("weight).gt(avgWeight) )  
  • .list();  
  • DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)  
  • .setProjection( Property.forName("weight") );  
  • session.createCriteria(Cat.class)  
  • .add( Subqueries.geAll("weight", weights) )  
  • .list();  
  • 鐢氳嚦鐩鎬簰鍏寵仈鐨勫瓙鏌ヨ涔熸槸鏈夊彲鑳界殑錛?nbsp;  
  •  
  • DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")  
  • .setProjection( Property.forName("weight").avg() )  
  • .add( Property.forName("cat2.sex").eqProperty("cat.sex") );  
  • session.createCriteria(Cat.class, "cat")  
  • .add( Property.forName("weight).gt(avgWeightForSex) )   
  • .list();   
  •     
  •   
  •  //鍏蜂綋搴旂敤   
  •   
  • 鎶奌SQL璇彞鐢–riteria浠f浛錛屾劅瑙夋洿鍔犵編瑙備竴鐐癸紝鑰屼笖榪樻敮鎸佷腑鏂囷紝瑕佹槸HSQL鎯蟲敮鎸佷腑鏂囷紝浣犲緱浣跨敤鍗犱綅絎︽潵璁劇疆錛屽叿浣撳彲鍙傜収錛歨ttp://.blogdriver.com//983190.html   
  •   
  • 閭d箞Criteria鐨勭敤娉曟槸榪欐牱鐨勶細   
  •   
  •     public Collection findCriteria(final DetachedCriteria dc, final IPage page) {   
  •         return (List) getHibernateTemplate().execute(new HibernateCallback(){   
  •             public Object doInHibernate(Session session) throws HibernateException, SQLException {   
  •                 Criteria c = dc.getExecutableCriteria(session);   
  •                    
  •                 page.setTotalCount(((Integer) c.setProjection(Projections.rowCount()).uniqueResult()).intValue());    
  •                 c.setProjection(null);    
  •                 c.setResultTransformer(Criteria.ROOT_ENTITY);   
  •                 c.setFirstResult(page.getBeginIndex());   
  •                 c.setMaxResults(page.getPageSize());   
  •                 return c.list();   
  •             }   
  •         }, true);   
  •     }   
  •   
  • 鍏朵腑鐨勫弬鏁?/span>true琛ㄧず瑕丼pring寮哄埗浼犲叆SessionImpl錛岃屼笉鏄紶鍏roxy浠g悊綾伙紝page.setTotalCount(((Integer) c.setProjection(Projections.rowCount()).uniqueResult()).intValue());    
  • c.setProjection(null); 鐩殑鏄負浜嗚幏寰楄鏁幫紝騫惰緗姇褰變負絀猴紝涓虹殑鏄繑鍥濴ist鍑烘潵錛屽鏋滀笉璁劇疆setProjection(null)鐨勮瘽錛宑.list灝嗚繑鍥炵殑鏄鏁?int鍨?錛岃屼笉鏄墍瑕佹煡璇㈢殑鏁版嵁搴撲俊鎭備絾鏄疌riteria鐨凴esultTransformer浼氬彉鎴怭assThroughResultTransformer錛宑riteria.list鐨勬椂鍊欏彲鑳界粨鏋滀細璺熺悊鎯崇殑涓嶄竴鏍楓傛墍浠ユ垜浠繕瑕佸啀c.setResultTransformer(Criteria.ROOT_ENTITY);鎶婄粨鏋滀互Entity鐨勫艦寮忚繑鍥烇紝鑰屼笉鏄疧bject[]鐨勫艦寮忚繑鍥炪傚叿浣撶殑ResultTransformer鍙互google涓涓嬨?  
  •   
  • 嫻嬭瘯浠g爜濡備笅錛?  
  •   
  •     public void testCriteria() {   
  •         DetachedCriteria dc = DetachedCriteria.forClass(User.class);   
  •         dc.add(Restrictions.eq("name""user")).add(Restrictions.like("description""%涓葷浜哄憳%"));   
  •         IPage page = new Page();   
  •         page.setCurrentPage(1);   
  •         page.setPageSize(10);   
  •         Collection list = _userDAO.findCriteria(dc, page);   
  •         assertNotNull(list);   
  •         assertEquals(1, list.size());   
  •     }   
  •   
  • 鏉ユ簮錛歨ttp://aimtime812110.spaces.msn.com/Blog/cns!1pXyGS-D6ufSs-1GPdk-fkiQ!108.entry   


  • Ke 2007-10-11 22:13 鍙戣〃璇勮
    ]]>
    HibernateTemplate鐨勫父瑙勭敤娉?/title><link>http://m.tkk7.com/keweibo/articles/150094.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 01 Oct 2007 11:55:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/150094.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/150094.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/150094.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/150094.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/150094.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt; line-height: 15.7pt">HibernateTemplate<span style="font-family: 瀹嬩綋">鎻愪緵闈炲父澶氱殑甯哥敤鏂規硶鏉ュ畬鎴愬熀鏈殑鎿嶄綔錛屾瘮濡傞氬父鐨勫鍔犮佸垹闄ゃ佷慨鏀廣佹煡璇㈢瓑鎿嶄綔錛?/span>Spring 2.0<span style="font-family: 瀹嬩綋">鏇村鍔犲鍛藉悕</span>SQL<span style="font-family: 瀹嬩綋">鏌ヨ鐨勬敮鎸侊紝涔熷鍔犲鍒嗛〉鐨勬敮鎸併傚ぇ閮ㄥ垎鎯呭喌涓嬶紝浣跨敤</span>Hibernate<span style="font-family: 瀹嬩綋">鐨勫父瑙勭敤娉曪紝灝卞彲瀹屾垚澶у鏁?/span>DAO<span style="font-family: 瀹嬩綋">瀵硅薄鐨?/span>CRUD<span style="font-family: 瀹嬩綋">鎿嶄綔銆備笅闈㈡槸</span>HibernateTemplate<span style="font-family: 瀹嬩綋">鐨勫父鐢ㄦ柟娉曠畝浠嬶細</span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>void delete(Object entity)<span style="font-family: 瀹嬩綋">錛氬垹闄ゆ寚瀹氭寔涔呭寲瀹炰緥</span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>deleteAll(Collection entities)<span style="font-family: 瀹嬩綋">錛氬垹闄ら泦鍚堝唴鍏ㄩ儴鎸佷箙鍖栫被瀹炰緥</span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>find(String queryString)<span style="font-family: 瀹嬩綋">錛氭牴鎹?/span>HQL<span style="font-family: 瀹嬩綋">鏌ヨ瀛楃涓叉潵榪斿洖瀹炰緥闆嗗悎</span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>findByNamedQuery(String queryName)<span style="font-family: 瀹嬩綋">錛氭牴鎹懡鍚嶆煡璇㈣繑鍥炲疄渚嬮泦鍚?/span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>get(Class entityClass, Serializable id)<span style="font-family: 瀹嬩綋">錛氭牴鎹富閿姞杞界壒瀹氭寔涔呭寲綾葷殑瀹炰緥</span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>save(Object entity)<span style="font-family: 瀹嬩綋">錛氫繚瀛樻柊鐨勫疄渚?/span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>saveOrUpdate(Object entity)<span style="font-family: 瀹嬩綋">錛氭牴鎹疄渚嬬姸鎬侊紝閫夋嫨淇濆瓨鎴栬呮洿鏂?/span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>update(Object entity)<span style="font-family: 瀹嬩綋">錛氭洿鏂板疄渚嬬殑鐘舵侊紝瑕佹眰</span>entity<span style="font-family: 瀹嬩綋">鏄寔涔呯姸鎬?/span></p> <p><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">      </span></span>setMaxResults(int maxResults)<span style="font-family: 瀹嬩綋">錛氳緗垎欏電殑澶у皬</span></p> <p style="margin-left: 21.25pt; text-indent: 0cm"><span style="font-family: 瀹嬩綋">涓嬮潰鏄竴涓畬鏁?/span>DAO<span style="font-family: 瀹嬩綋">綾葷殑婧愪唬鐮侊細</span></p> <p>public class PersonDAOHibernate implements PersonDAO</p> <p>{</p> <p style="text-align: left" align="left">    //<span style="font-family: 榛戜綋">閲囩敤</span>log4j<span style="font-family: 榛戜綋">鏉ュ畬鎴愯皟璇曟椂鐨勬棩蹇楀姛鑳?/span></p> <p style="text-indent: 21pt">private static Log log = LogFactory.getLog(NewsDAOHibernate.class);</p> <p>    //<span style="font-family: 榛戜綋">浠ョ鏈夌殑鎴愬憳鍙橀噺鏉ヤ繚瀛?/span>SessionFactory<span style="font-family: 榛戜綋">銆?/span></p> <p style="text-indent: 21pt">private SessionFactory sessionFactory;</p> <p style="text-indent: 21pt">//<span style="font-family: 榛戜綋">浠ョ鏈夊彉閲忕殑鏂瑰紡淇濆瓨</span>HibernateTemplate</p> <p style="text-indent: 21pt">private HibernateTemplate hibernateTemplate = null;</p> <p>         //<span style="font-family: 榛戜綋">璁懼兼敞鍏?/span>SessionFactory<span style="font-family: 榛戜綋">蹇呴渶鐨?/span>setter<span style="font-family: 榛戜綋">鏂規硶</span></p> <p>    public void setSessionFactory(SessionFactory sessionFactory) </p> <p style="text-indent: 21pt">{</p> <p>           this.sessionFactory = sessionFactory;</p> <p>    }</p> <p>         //<span style="font-family: 榛戜綋">鍒濆鍖栨湰</span>DAO<span style="font-family: 榛戜綋">鎵闇鐨?/span>HibernateTemplate</p> <p style="text-indent: 21pt">public HIbernateTemplate getHibernateTemplate() </p> <p style="text-indent: 21pt">{</p> <p style="text-indent: 21pt">         //<span style="font-family: 榛戜綋">棣栧厛錛屾鏌ュ師鏉ョ殑</span>hibernateTemplate<span style="font-family: 榛戜綋">瀹炰緥鏄惁榪樺瓨鍦?/span></p> <p style="text-indent: 21pt">         if ( hibernateTemplate == null)</p> <p style="text-indent: 21pt">         {</p> <p style="text-indent: 21pt">                   //<span style="font-family: 榛戜綋">濡傛灉涓嶅瓨鍦紝鏂板緩涓涓?/span>HibernateTemplate<span style="font-family: 榛戜綋">瀹炰緥</span></p> <p style="text-indent: 21pt">                   hibernateTemplate = new HibernateTemplate(sessionFactory);</p> <p style="text-indent: 21pt">         }</p> <p style="text-indent: 21pt">         return hibernateTemplate;</p> <p style="text-indent: 21pt">}</p> <p>         //<span style="font-family: 榛戜綋">榪斿洖鍏ㄩ儴鐨勪漢鐨勫疄渚?/span></p> <p>    public List getPersons()</p> <p>         {        </p> <p>                   //<span style="font-family: 榛戜綋">閫氳繃</span>HibernateTemplate<span style="font-family: 榛戜綋">鐨?/span>find<span style="font-family: 榛戜綋">鏂規硶榪斿洖</span>Person<span style="font-family: 榛戜綋">鐨勫叏閮ㄥ疄渚?/span></p> <p>           return getHibernateTemplate().find("from Person");</p> <p>    }</p> <p>         /**</p> <p>          * <span style="font-family: 榛戜綋">鏍規嵁涓婚敭榪斿洖鐗瑰畾瀹炰緥</span></p> <p>          * @ return <span style="font-family: 榛戜綋">鐗瑰畾涓婚敭瀵瑰簲鐨?/span>Person<span style="font-family: 榛戜綋">瀹炰緥</span></p> <p>          * @ param <span style="font-family: 榛戜綋">涓婚敭鍊?/span></p> <p>    public News getNews(int personid)</p> <p>         {</p> <p>           return (Person)getHibernateTemplate().get(Person.class, new Integer(personid));</p> <p>    }</p> <p>         /**</p> <p>          * @ person <span style="font-family: 榛戜綋">闇瑕佷繚瀛樼殑</span>Person<span style="font-family: 榛戜綋">瀹炰緥</span></p> <p>          */</p> <p>    public void savePerson(Person person)</p> <p>         {                 </p> <p>                   getHibernateTemplate().saveOrUpdate(person);</p> <p>    }</p> <p>         /**</p> <p>          * @ param personid <span style="font-family: 榛戜綋">闇瑕佸垹闄?/span>Person<span style="font-family: 榛戜綋">瀹炰緥鐨勪富閿?/span></p> <p>          * /</p> <p>    public void removePerson(int personid)</p> <p>         {</p> <p>                   //<span style="font-family: 榛戜綋">鍏堝姞杞界壒瀹氬疄渚?/span></p> <p>           Object p = getHibernateTemplate().load(Person.class, new Integer(personid));</p> <p>                   //<span style="font-family: 榛戜綋">鍒犻櫎鐗瑰畾瀹炰緥</span></p> <p>           getHibernateTemplate().delete(p);</p> <p>    }</p> <p>}</p> <img src ="http://m.tkk7.com/keweibo/aggbug/150094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-10-01 19:55 <a href="http://m.tkk7.com/keweibo/articles/150094.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> Hibernate鐨勫鏉傜敤娉旽ibernateCallbackhttp://m.tkk7.com/keweibo/articles/150093.htmlKeKeMon, 01 Oct 2007 11:54:00 GMThttp://m.tkk7.com/keweibo/articles/150093.htmlhttp://m.tkk7.com/keweibo/comments/150093.htmlhttp://m.tkk7.com/keweibo/articles/150093.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/150093.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/150093.htmlHibernateTemplate榪樻彁渚涗竴縐嶆洿鍔犵伒媧葷殑鏂瑰紡鏉ユ搷浣滄暟鎹簱錛岄氳繃榪欑鏂瑰紡鍙互瀹屽叏浣跨敤Hibernate鐨勬搷浣滄柟寮忋?/span>HibernateTemplate鐨勭伒媧昏闂柟寮忔槸閫氳繃濡備笅涓や釜鏂規硶瀹屾垚錛?/span>

    q      Object execute(HibernateCallback action)

    q      List execute(HibernateCallback action)

    榪欎袱涓柟娉曢兘闇瑕佷竴涓?/span>HibernateCallback鐨勫疄渚嬶紝HibernateCallback瀹炰緥鍙湪浠諱綍鏈夋晥鐨?/span>Hibernate鏁版嵁璁塊棶涓嬌鐢ㄣ傜▼搴忓紑鍙戣呴氳繃HibernateCallback錛屽彲浠ュ畬鍏ㄤ嬌鐢?/span>Hibernate鐏墊椿鐨勬柟寮忔潵璁塊棶鏁版嵁搴擄紝瑙e喅Spring灝佽Hibernate鍚庣伒媧繪т笉瓚崇殑緙洪櫡銆?/span>HibernateCallback鏄竴涓帴鍙o紝璇ユ帴鍙e彧鏈変竴涓柟娉?/span>doInHibernate(org.hibernate.Session session)錛岃鏂規硶鍙湁涓涓弬鏁?/span>Session銆?/span>

    閫氬父錛岀▼搴忎腑閲囩敤瀹炵幇HibernateCallback鐨勫尶鍚嶅唴閮ㄧ被鏉ヨ幏鍙?/span>HibernateCallback鐨勫疄渚嬶紝鏂規硶doInHibernate鐨勬柟娉曚綋灝辨槸Spring鎵ц鐨勬寔涔呭寲鎿嶄綔銆傚叿浣撲唬鐮佸涓嬶細

    public class PersonDaoImpl implements PersonDao

    {

        //縐佹湁瀹炰緥鍙橀噺淇濆瓨SessionFactory

             private SessionFactory sessionFactory;

             //渚濊禆娉ㄥ叆蹇呴』鐨?/span>setter鏂規硶

        public void setSessionFactory(SessionFactory sessionFactory)

             {

               this.sessionFactory = sessionFactory;

        }

             /**

              * 閫氳繃浜哄悕鏌ユ壘鎵鏈夊尮閰嶈鍚嶇殑Person瀹炰緥

              * @param name 鍖歸厤鐨勪漢鍚?/span>

              * @return 鍖歸厤璇ヤ換鍛界殑鍏ㄩ儴Person闆嗗悎

              */

        public List findPersonsByName(final String name)

             {

               //鍒涘緩HibernateTemplate瀹炰緥

                       HibernateTemplate hibernateTemplate =

                             new HibernateTemplate(this.sessionFactory);

               //榪斿洖HibernateTemplate鐨?/span>execute鐨勭粨鏋?/span>

                       return (List) hibernateTemplate.execute(

                    //鍒涘緩鍖垮悕鍐呴儴綾?/span>

                       new HibernateCallback()

                       {

                  public Object doInHibernate(Session session) throws HibernateException

                                {

                       //浣跨敤鏉′歡鏌ヨ鐨勬柟娉曡繑鍥?/span>

                                         List result = session.createCriteria(Person.class)

                                                                         .add(Restrictions.like(“name”, name+”%”)

                                                                               .list();

                                        return result;

                         }

                    });

        }

    }

    娉ㄦ剰錛氭柟娉?/span>doInHibernate鏂規硶鍐呭彲浠ヨ闂?/span>Session錛岃Session瀵硅薄鏄粦瀹氬埌璇ョ嚎紼嬬殑Session瀹炰緥銆傝鏂規硶鍐呯殑鎸佷箙灞傛搷浣滐紝涓庝笉浣跨敤Spring鏃剁殑鎸佷箙灞傛搷浣滃畬鍏ㄧ浉鍚屻傝繖淇濊瘉瀵逛簬澶嶆潅鐨勬寔涔呭眰璁塊棶錛屼緷鐒跺彲浠ヤ嬌鐢?/span>Hibernate鐨勮闂柟寮忋?/span>



    Ke 2007-10-01 19:54 鍙戣〃璇勮
    ]]>
    Hibernate3.x璋冪敤瀛樺偍榪囩▼ http://m.tkk7.com/keweibo/articles/145983.htmlKeKeMon, 17 Sep 2007 14:09:00 GMThttp://m.tkk7.com/keweibo/articles/145983.htmlhttp://m.tkk7.com/keweibo/comments/145983.htmlhttp://m.tkk7.com/keweibo/articles/145983.html#Feedback2http://m.tkk7.com/keweibo/comments/commentRss/145983.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/145983.html闃呰鍏ㄦ枃

    Ke 2007-09-17 22:09 鍙戣〃璇勮
    ]]>
    Hibernate鐨勬绱㈢瓥鐣?/title><link>http://m.tkk7.com/keweibo/articles/145535.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 16 Sep 2007 06:52:00 GMT</pubDate><guid>http://m.tkk7.com/keweibo/articles/145535.html</guid><wfw:comment>http://m.tkk7.com/keweibo/comments/145535.html</wfw:comment><comments>http://m.tkk7.com/keweibo/articles/145535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/keweibo/comments/commentRss/145535.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/keweibo/services/trackbacks/145535.html</trackback:ping><description><![CDATA[     鎽樿:  Hibernate鐨勬绱㈢瓥鐣? 绔嬪嵆媯绱€佸歡榪熸绱紝棰勫厛鎶撳彇鍜屾壒閲忔绱㈤兘鏄負浜嗕紭鍖栧姞杞芥ц兘鑰岃緗殑絳栫暐銆傜珛鍗沖姞杞姐佸歡榪熷姞杞姐侀鍏堟姄鍙栨槸鍚屼竴綰у埆鐨勭瓥鐣ワ紝鍥犱負瀹冧滑鏄笁閫変竴鐨勭瓥鐣ャ傜敤浜嗗叾涓竴涓垯鍙﹀涓や釜灝變笉鍙敤浜嗭紝鑰屼笖琚歡榪熷姞杞界殑瀵硅薄褰撴渶緇堣鍔犺澆鏃訛紝涓瀹氭槸浣跨敤浜嗙珛鍗沖姞杞界殑褰㈠紡銆傚鏋滃湪閰嶇疆鏂囦歡涓緗簡瀵規煇涓睘鎬х殑棰勫厛鎶撳彇錛屽垯瀵規灞炴х殑鍏朵粬鍔犺澆璁劇疆鍏ㄩ儴澶辨晥錛堟瘮濡傝繕璁劇疆浜嗗歡榪熷姞杞斤紝姝ゆ椂澶辨晥錛夈?..  <a href='http://m.tkk7.com/keweibo/articles/145535.html'>闃呰鍏ㄦ枃</a><img src ="http://m.tkk7.com/keweibo/aggbug/145535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/keweibo/" target="_blank">Ke</a> 2007-09-16 14:52 <a href="http://m.tkk7.com/keweibo/articles/145535.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate鐨勬暟鎹簱浜嬪姟綆$悊http://m.tkk7.com/keweibo/articles/145533.htmlKeKeSun, 16 Sep 2007 06:50:00 GMThttp://m.tkk7.com/keweibo/articles/145533.htmlhttp://m.tkk7.com/keweibo/comments/145533.htmlhttp://m.tkk7.com/keweibo/articles/145533.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/145533.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/145533.html

    涓銆?span style="font: 7pt 'Times New Roman'">           鏁版嵁搴撲簨鍔℃蹇?/span>

    鏁版嵁搴撲簨鍔$殑鐗瑰緛錛?/span> ACID

    Atomic 錛堝師瀛愭э級銆?/span> Consistency 錛堜竴鑷存э級銆?/span> Isolation 錛堥殧紱繪э級鍜?/span> Durability 錛堟寔涔呮э級銆?/span> DBMS 鐢ㄦ棩蹇楁潵淇濊瘉鏁版嵁鐨勫師瀛愭с佷竴鑷存у拰鎸佷箙鎬э紱鐢ㄩ攣鐨勬満鍒舵潵淇濊瘉鏁版嵁鐨勯殧紱繪с?/span>

    浜屻?span style="font: 7pt 'Times New Roman'">           浜嬪姟鐨勮竟鐣?/span>

    鏁版嵁搴撴敮鎸?/span> 2 縐嶄簨鍔℃ā寮忥細鑷姩鎻愪氦鍜屾墜鍔ㄦ彁浜ゃ?/span>

    JDBC API 鐨勪簨鍔¤竟鐣?/span>

    try
    {
        Connection conn 
    =  java.sql.DriverManager,.getConnection(dbUrl,dbUser,dbPwd);
        conn.setAutoCommit(
    false );  // 璁劇疆鎴愭墜鍔ㄦā寮?/span>
        stmt  =  conn.createStatement();
        stmt.executeUpdate(
    " . " );  // 鏁版嵁搴撴洿鏂?
        stmt.executeUpdate( " . " );  // 鏁版嵁搴撴洿鏂?
        
        conn.commit();
    }

    catch (Exception e)
    {
        conn.rollback();
    }

    finally
    {
        stmt.close();
        conn.close();
    }

    Hibernate API 澹版槑浜嬪姟杈圭晫

    Session session  =  factory.openSession();
    Transaction tx;
    try  
    {
        tx 
    =  session.beginTransaction();  // 寮濮嬩簨鍔?br />      // 鎵ц鎿嶄綔
        銆傘傘傘傘?br />     
        tx.commit();
    }

    catch  (Exception e)
    {
        
    if  (tx != null )
        
    {
            tx.rollback();
        }

    }

    finally
    {
        session.close();
    }

    娉細涓涓?/span> session 鍙互瀵瑰簲澶氫釜浜嬪姟錛屼絾鏄帹鑽愮殑鍋氭硶鏄竴涓?/span> session 瀵瑰簲涓涓簨鍔°?/span>

    涓夈?/font>            澶氫簨鍔$殑騫跺彂闂

    褰撳涓簨鍔″悓鏃惰闂浉鍚岀殑鏁版嵁鐨勬椂鍊欙紝紼嬪簭濡傛灉娌℃湁閲囧彇閫傚綋鐨勯殧紱繪帾鏂斤紝灝變細鍙戠敓鏁版嵁搴撶殑騫跺彂闂銆傚父瑙佺殑騫跺彂闂鏈夛細

    絎竴綾諱涪澶辨洿鏂幫細鎾ゆ秷浜嬪姟鐨勬椂鍊欙紝鎶婂叾浠栫殑浜嬪姟宸茬粡鎻愪氦鐨勬暟鎹粰瑕嗙洊浜嗭紱

    鑴忚錛涜浜嗘病鏈夋彁浜ょ殑鏁版嵁錛?/span>

    铏氳錛氫竴涓簨鍔¤鍒板彟澶栦竴涓簨鍔″凡緇忔彁浜ょ殑鏂版彃鍏ョ殑鏁版嵁錛?/span>

    涓嶅彲閲嶅璇伙細涓涓簨鍔¤鍒板彟澶栦竴涓簨鍔″凡緇忔彁浜ょ殑鏇存柊鐨勬暟鎹紱

    絎簩綾諱涪澶辨洿鏂幫細涓涓簨鍔¤鐩栧彟澶栦竴涓簨鍔″凡緇忔彁浜ょ殑鏇存柊鏁版嵁銆?/span> 
    鍥涖?/strong>          
    閿?/span>

    涓鑸湴錛屽ぇ鍨嬬殑 DBMS 閮戒細鑷姩鐨勭鐞嗛攣瀹氭満鍒訛紝浣嗘槸鍦ㄥ鏁版嵁鐨勫畨鍏ㄦс佸畬鏁存у拰涓鑷存ф湁鐗規畩瑕佹眰鐨勫湴鏂癸紝鍙互鐢變簨鍔℃湰韜潵綆$悊鐞愮殑鏈哄埗銆?/span>

    鏈変竴鐐硅鍏蟲敞鐨勬槸錛氶攣鐨勭矑搴﹁秺澶э紝闅旂鎬ц秺濂斤紝騫跺彂鎬ц秺宸?/span>

    鎸夌収閿佺殑紼嬪害鏉ュ垎鏈夛細

    鍏變韓閿侊細鐢ㄨ鎿嶄綔錛岄潪鐙崰鐨勶紝鍏朵粬浜嬪姟鍙互璇伙紝浣嗘槸涓嶈兘鏇存柊錛屽茍鍙戞уソ錛?/span>

    鐙崰閿侊細鐢ㄤ笌 insert update 鍜?/span> delete 絳夎鍙ワ紝鍏朵粬浜嬪姟涓嶈兘璇伙紝涔熶笉鑳芥敼錛屽茍鍙戞у樊錛?/span>

    鏇存柊閿侊細鎵ц update 鐨勬椂鍊欙紝鍔犻攣銆?/span>

    姝葷悙錛氬鏄簨鍔″垎鍒攣瀹氫簡涓涓祫婧愶紝鍙堣姹傞攣瀹氬鏂瑰凡緇忛攣瀹氱殑璧勬簮錛屽氨閫犳垚浜嗚姹傜幆銆?/span>

    闄嶄綆姝婚攣鐨勬渶濂藉姙娉曟槸浣跨敤鐭簨鍔°?/span>

    浜斻?/font>            鏁版嵁搴撶殑浜嬪姟闅旂綰у埆

    鏁版嵁搴撴彁渚?/span> 4 縐嶄簨鍔¢殧紱葷駭鍒細

    Serializable 錛氫覆琛屽寲錛涳紙闅旂綰у埆鏈楂橈級 1

    Repeatable Read 錛氬彲閲嶅璇伙紱 2

    Read Commited 錛氳宸叉彁浜ゆ暟鎹紱 4

    Read Uncommited 錛氳鏈彁浜ゆ暟鎹紱錛堥殧紱葷駭鍒渶浣庯級 8

    Hiberate 涓殑闅旂綰у埆鐨勮緗?/span>

    鍦?/span> Hibernate 鐨勯厤緗枃浠朵腑 hibernate.connection.isolation=2

    鍏?/font>            鎮茶閿佸拰涔愯鐞?/span>

    浠庡簲鐢ㄧ▼搴忕殑瑙掑害鏉ョ湅錛岄攣鍒嗕負鎮茶閿佸拰涔愯閿併?/span>

    鎮茶閿侊細鏄劇ず鐨勪負紼嬪簭鍔犻攣錛屼絾鏄檷浣庡茍鍙戞с?/span>

    Select ……. For update;

    鍦?/span> Hibernate 涓殑浠g爜

    Session.get(Account.class,net Long(1),LockMode.UPGRADE) 錛?/span> // 紼嬪簭閲囩敤鎮茶閿?/span>

    涔愯閿侊細渚濋潬 DBMS 鏉ョ鐞嗛攣錛岀▼搴忎緷闈犵増鏈帶鍒舵潵閬垮厤騫跺彂闂銆?/span>

    鍦ㄥ璞?/span> - 鍏崇郴鏄犲皠鐨勬枃浠朵腑錛岀敤 <version> 鎴栬?/span> <timestamp> 鍙互綆$悊騫跺彂銆備箰瑙傜悙姣旀偛瑙傜悙鏈夋洿濂界殑騫跺彂鎬э紝浼樺厛鑰冭檻涔愯鐞愩?/span>  

    http://m.tkk7.com/sodmewuhan/archive/2006/04/22/42505.html


    Ke 2007-09-16 14:50 鍙戣〃璇勮
    ]]>
    Hibernate鐨勬绱㈢瓥鐣?http://m.tkk7.com/keweibo/articles/145532.htmlKeKeSun, 16 Sep 2007 06:48:00 GMThttp://m.tkk7.com/keweibo/articles/145532.htmlhttp://m.tkk7.com/keweibo/comments/145532.htmlhttp://m.tkk7.com/keweibo/articles/145532.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/145532.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/145532.html

    Hibernate 鎻愪緵浜?/span> 3 縐嶆绱㈢瓥鐣ワ細

    l        寤惰繜媯绱紱

    l        绔嬪嵆媯绱紱

    l        榪垏宸﹀榪炴帴錛?/span>

    Hibernate 鎻愪緵 2 縐嶆柟寮忔潵紜畾媯绱㈢瓥鐣ワ紝涓涓槸鍦ㄩ厤緗枃浠跺綋涓紝鍙﹀涓縐嶆槸鍦ㄧ▼搴忕璁劇疆銆傚綋鐒訛紝濡傛灉浣犲湪紼嬪簭涓緗簡媯绱㈢瓥鐣ワ紝閭d箞浣犲湪閰嶇疆鏂囦歡涓殑璁劇疆涔熷氨鏃犳晥浜嗐傚彟澶栫殑涓縐嶆儏鍐墊槸 HQL 浼氬拷鐣ラ厤緗枃浠剁殑璁劇疆錛岃屾繪槸閲囩敤榪垏宸﹀榪炴帴銆?/span>

    涓銆?綾葷駭鍒殑媯绱?/span>

    鍙互閫夋嫨鐨勬绱㈢瓥鐣ユ槸绔嬪嵆媯绱㈠拰寤惰繜媯绱紝榛樿鐨勬槸绔嬪嵆媯绱€傜敤閰嶇疆鏂囦歡涓殑 <class> 鑺傜偣鐨?/span> lazy 鏉ユ帶鍒躲?/span>

    娉ㄦ剰錛氫笉綆′綘鍦ㄩ厤緗?/span> class 鐨?/span> lazy 鏄?/span> true 榪樻槸 false 錛屽 get() 鍜?/span> create Criteria () 鏂規硶閮戒笉璧蜂綔鐢紝鍙湁瀵?/span> load() 鏂規硶璧蜂綔鐢ㄣ?/span>

    褰撲綘浣跨敤鐨勬绱㈢瓥鐣ユ槸 lazy 鐨勬椂鍊欙紝褰撲綘鎵ц

    Customer customer = (Customer)session.load(Customer.class,new Long(1));

    鐨勬椂鍊欙紝 Hibernate 涓嶄粠鏁版嵁搴撴绱㈡暟鎹紝鑰屽彧鏄駭鐢熶竴涓唬鐞嗙被錛屽彧鏈夊綋浣犳墽琛?/span>

    Customer.getName();

    鐨勬椂鍊欙紝 Hibernate 鎵嶅埌鏁版嵁搴撳彇鏁版嵁銆傛墍浠ワ紝濡備笅鐨勪唬鐮佹槸浼氳鎶涘嚭寮傚父鐨勶細

    Session session  =  sessionFactory.openSession();
    transaction tx 
    =   null ;
    tx 
    =  session.beginTransaction();
      Customer customer 
    =  (Customer)session.load(Customer. class , new  Long( 1 ));
    tx.commit();
      session.close();
    customer.getName();

    get() 鏂規硶鎬繪槸鐢ㄧ殑绔嬪嵆媯绱紝濡傛灉鍜屽畠鐩稿叧鑱旂殑綾諱篃鏄敤鐨勭珛鍗蟲绱紝閭d箞涔熶細鎶婄浉鍏寵仈鐨勬暟鎹篃媯绱㈠嚭鏉ャ?/span>

    浜屻?涓瀵瑰拰澶氬澶氬叧鑱旀绱?/span>

    涓鑸湴錛屼負浜嗘湁鍑忓皯瀵規暟鎹簱鐨勮闂紝鎴戜滑寰寰鐢ㄥ歡榪熸绱㈢殑絳栫暐銆傛墍浠ワ紝鎴戜滑浼樺厛浣跨敤濡備笅鏂瑰紡錛?/span>

    <set class=”order” inverse=”true’ lazy=”true” >

    浣嗘槸錛屾垜浠湪媯绱?#8220;澶?#8221;鐨勪竴鏂圭殑鏃跺欙紝 Hibernate 涓嶈兘涓烘垜浠駭鐢熶唬鐞嗙被銆傜敱姝わ紝鎴戜滑灝辮鐢?/span> betch-size 鐨勯厤緗潵鍑忓皯 SQL 璇彞銆?/span>

    褰撴垜浠嬌鐢?/span> outer-join 灞炴х殑鏃跺欙紝鎴戜滑灝辨病鏈夊繀瑕佷嬌鐢?/span> lazy 灞炴т簡銆?/span> Outer-join 浼氫竴嬈″皢“涓”鏂瑰拰涓庝箣鐩稿叧鐨?#8220;澶?#8221;鏂圭敤宸﹀榪炴帴鐨勬柟寮忔绱㈠嚭鏉ャ?/span>

    Session session = sessionFactory.openSession();

                         Transaction tx = null;

                         tx = session.beginTransaction();

                        Customer customer = (Customer)session.get(Customer.class,new Long(1));

    浜х敓鐨?/span> SQL 璇彞濡備笅錛?/span>

    Hibernate: select customer0_.ID as ID1_, customer0_.NAME as NAME2_1_, orders1_.CUSTOMER_ID as CUSTOMER3_3_, orders1_.ID as ID3_, orders1_.ID as ID0_, orders1_.ORDER_NUMBER as ORDER2_1_0_, orders1_.CUSTOMER_ID as CUSTOMER3_1_0_ from sampledb.customers customer0_ left outer join sampledb.orders orders1_ on customer0_.ID=orders1_.CUSTOMER_ID where customer0_.ID=?



    Ke 2007-09-16 14:48 鍙戣〃璇勮
    ]]>
    Hibernate涓嬌鐢ㄨ繃婊ゅ櫒瀹屾垚浜嬪姟澶勭悊http://m.tkk7.com/keweibo/articles/141088.htmlKeKeWed, 29 Aug 2007 13:29:00 GMThttp://m.tkk7.com/keweibo/articles/141088.htmlhttp://m.tkk7.com/keweibo/comments/141088.htmlhttp://m.tkk7.com/keweibo/articles/141088.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/141088.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/141088.html瀹炵幇鐨勫姛鑳?   閫氳繃Hibernate鐨勫伐鍏風被寰楀埌涓涓叏灞鍞竴鐨凷essionFactory瀵硅薄
                            閫氳繃SessionFactory瀵硅薄寰楀埌Session瀵硅薄,鐒跺悗寮濮嬩竴涓柊鐨勪簨鍔?br>                        閫氳繃chain瀵硅薄鐨刣oFilter()鏂規硶鏉ュ畬鎴愪笟鍔″鐞?br>                        鎻愪氦鎴栬呭洖婊氫簨鍔?

    HibernateFilter.java

    import java.io.IOException;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.hibernate.SessionFactory;

    import cn.hxex.blog.hibernate.HibernateUtil;

    public class HibernateFilter implements Filter {

        private static Log log = LogFactory.getLog(HibernateFilter.class);

        /**
         * 榪囨護鍣ㄧ殑涓昏鏂規硶
         * 鐢ㄤ簬瀹炵幇Hibernate浜嬪姟鐨勫紑濮嬪拰鎻愪氦
         */
        public void doFilter(ServletRequest request,
                             ServletResponse response,
                             FilterChain chain)
                throws IOException, ServletException
        {
         // 寰楀埌SessionFactory瀵硅薄鐨勫疄渚?br>     SessionFactory sf = HibernateUtil.getSessionFactory();

            try
            {
             // 寮濮嬩竴涓柊鐨勪簨鍔?br>            log.debug("Starting a database transaction");
                sf.getCurrentSession().beginTransaction();

                log.debug( "Request Path:\t" + ((HttpServletRequest)request).getServletPath() );
                // Call the next filter (continue request processing)
                chain.doFilter(request, response);

                // 鎻愪氦浜嬪姟
                log.debug("Committing the database transaction");
                sf.getCurrentSession().getTransaction().commit();

            }
            catch (Throwable ex)
            {
             ex.printStackTrace();
                try
                {
                 // 鍥炴粴浜嬪姟
                    log.debug("Trying to rollback database transaction after exception");
                    sf.getCurrentSession().getTransaction().rollback();
                }
                catch (Throwable rbEx)
                {
                    log.error("Could not rollback transaction after exception!", rbEx);
                }

                // 鎶涘嚭寮傚父
                throw new ServletException(ex);
            }
        }

        /**
         * Servlet榪囨護鍣ㄧ殑鍒濆鍖栨柟娉?br>     * 鍙互璇誨彇閰嶇疆鏂囦歡涓緗殑閰嶇疆鍙傛暟
         */
        public void init(FilterConfig filterConfig) throws ServletException {}

        /**
         * Servlet鐨勯攢姣佹柟娉?br>     * 鐢ㄤ簬閲婃斁榪囨護鍣ㄦ墍鐢寵鐨勮祫婧?br>     */
        public void destroy() {}

    }



    Ke 2007-08-29 21:29 鍙戣〃璇勮
    ]]>
    涓涓叕鍏辯殑瀹炰綋瀵硅薄鍩虹被http://m.tkk7.com/keweibo/articles/141067.htmlKeKeWed, 29 Aug 2007 11:48:00 GMThttp://m.tkk7.com/keweibo/articles/141067.htmlhttp://m.tkk7.com/keweibo/comments/141067.htmlhttp://m.tkk7.com/keweibo/articles/141067.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/141067.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/141067.html鍦ㄥ緩绔嬪疄浣撳璞′箣鍓?鍙互鍏堝疄鐜頒竴涓叕鍏辯殑瀹炰綋瀵硅薄鍩虹被.鍦ㄨ繖涓熀綾誨璞′腑鍙互鍖呭惈浠h〃姣忎竴涓疄浣撳璞″敮涓鐨?br>鏍囪瘑 id 灞炴?浠ュ強涓浜涘叕鐢ㄧ殑鏂規硶.鍏蜂綋濡備笅

    BaseModel.java

    import java.io.Serializable;

    import org.apache.commons.lang.builder.EqualsBuilder;
    import org.apache.commons.lang.builder.HashCodeBuilder;
    import org.apache.commons.lang.builder.ReflectionToStringBuilder;

    public class BaseModel implements Serializable{

     /**
      * The Generated SerialVersionUID
      */
     private static final long serialVersionUID = 7766184319541530720L;
     
     /**
      * The identify of the object
      */
     private String id;

     public String getId() {
      return id;
     }

     public void setId(String id) {
      this.id = id;
     }
     
     /**
      * Common implement equals method
      */
     public boolean equals( Object obj )
     {
      if( this==obj ) return true;
      
      if( !( obj instanceof BaseModel ) )
       return false;
      
      BaseModel target = (BaseModel)obj;
      
      if( this.getId()!=null && this.getId().length()>0 )
      {
       return this.getId().equals( target.getId() );
      }
      
      if( target.getId()!=null && target.getId().length()>0 )
      {
       return false;
      }
      
      return EqualsBuilder.reflectionEquals(this, obj);
     }

     /**
      * Generate the hash code
      */
     public int hashCode()
     {
      if( this.getId()!=null && this.getId().length()>0 )
      {
       return this.getId().hashCode();
      }
       
      return HashCodeBuilder.reflectionHashCode(this);
     }

     /**
      * Common implement toString method
      */
     public String toString()
     {
      return ReflectionToStringBuilder.toString( this );
     }
    }
             equals()鏂規硶,鐢ㄤ簬鍒ゆ柇涓や釜瀵硅薄鏄惁鐩哥瓑,浣嗗茍涓嶆槸鍦ㄤ嬌鐢?=="榪涜涓や釜瀵硅薄鏄惁鐩哥瓑鐨勫垽鏂椂璋冪敤.鍥犱負浣跨敤"=="鎵鍒ゆ柇鐨勬槸涓や釜瀵硅薄鐨勫紩鐢ㄦ槸鍚︾浉絳?涔熷彲浠ョ畝鍗曠悊瑙d負涓や釜瀹炰緥鎵寮曠敤鐨勬槸鍚︿負鍐呭瓨涓殑鍚屼竴涓璞?equals()鏂規硶鍙互鐞嗚В涓轟袱涓璞″湪"鍚箟"涓婃槸鍚︾浉絳?涔熷氨鏄榪欎袱涓璞℃墍琛ㄨ揪鐨勬剰鎬濇槸鍚︾浉鍚?equals()鏂規硶鍦ㄥ璞′繚瀛樺埌闆嗗悎瀹瑰櫒綾?Collection)涓椂琚皟鐢?鍥犱負闆嗗悎瀹瑰櫒綾諱笉鍏佽鍏朵腑瀛樺湪涓や釜鐩稿悓瀵硅薄瀹炰緥,鍏跺垽鏂殑渚濇嵁灝辨槸閫氳繃璋冪敤璇ュ疄浣撳璞$殑equals()鏂規硶鏉ヨ繘琛屽垽鏂殑.
             濡傛灉淇敼浜唀quals()鏂規硶,灝卞繀欏諱慨鏀筯ashCode()鏂規硶.濡傛灉涓嶈繖鏍風殑璇?灝辮繚鍙峧ava.lang.Object鐨勯氱敤鐨刪ashCode鐨勭害瀹?浠庤屽鑷磋綾繪棤娉曚笌鍩轟簬鏁e垪鍊肩殑闆嗗悎綾諱竴璧鋒甯稿伐浣?
             toString()鏂規硶,鐢ㄤ簬灝嗗綋鍓岼ava瀵硅薄鐨勫疄渚嬭漿鎹負鍙互鎻忚堪鍏跺唴瀹圭殑瀛楃涓?榪欎釜鏂規硶鐨勪綔鐢ㄦ槸鍦ㄧ▼搴忚皟璇曠殑榪囩▼鍙互鏂逛究鍦板緱鍒板疄浣撳璞′腑浠や漢鎰熷叴瓚g殑淇℃伅,鏈夊埄浜庢洿鍑嗙‘鍙婃椂鍦板彂鐜扮▼搴忎腑鐨勯棶棰?



    Ke 2007-08-29 19:48 鍙戣〃璇勮
    ]]>
    Hibernate 鐨勫伐鍏風被http://m.tkk7.com/keweibo/articles/141061.htmlKeKeWed, 29 Aug 2007 11:12:00 GMThttp://m.tkk7.com/keweibo/articles/141061.htmlhttp://m.tkk7.com/keweibo/comments/141061.htmlhttp://m.tkk7.com/keweibo/articles/141061.html#Feedback0http://m.tkk7.com/keweibo/comments/commentRss/141061.htmlhttp://m.tkk7.com/keweibo/services/trackbacks/141061.htmlHibernate 鐨勫伐鍏風被

      瀵逛簬Hibernate 3.1 浠ュ墠鐨勭殑鐗堟湰鍦ㄥ疄鐜癏ibernate宸ュ叿綾繪椂,闇瑕侀氳繃涓や釜綰跨▼
    灞閮ㄥ彉閲忔潵淇濆瓨涓庡綋鍓嶈繘琛岀浉瀵瑰簲鐨凷ession鍜屼簨鍔″璞$殑瀹炰緥.
      鑰屽浜嶩ibernate 3.1 浠ュ悗鐨勭増鏈?浣跨敤綰跨▼灞閮ㄥ彉閲忎繚瀛楽ession鍜屼簨鍔″璞$殑
    宸ヤ綔灝卞畬鍏ㄤ笉闇瑕佽嚜宸卞幓瀹炵幇浜?鍙渶鍦℉ibernate.cfg.xml閰嶇疆鏂囦歡涓鍔犱竴涓悕涓?br>Current_session_context_class鐨勫睘鎬?騫朵笖璁劇疆璇ュ睘鎬х殑鍊間負thread.榪欐牱Hibernate
    灝卞彲浠ヨ嚜鍔ㄥ湴浣跨敤綰跨▼灞閮ㄥ彉閲忔潵淇濆瓨褰撳墠鐨勮繘紼嬬殑Session鍜屼簨鍔″璞′簡.
      鐩稿簲鍦?Hibernate涔熶負鍏禨ession瀵硅薄澧炲姞浜唃etTransaction()鏂規硶,浠ヤ究鍙互闅忔椂
    寰楀埌褰撳墠鐨勪簨鍔″茍榪涜鎻愪氦鎴栬呭洖婊氭搷浣?榪欎釜鏂規硶鍦ㄤ互鍓嶇増鏈殑hibernate涓槸涓嶅瓨鍦?br>鐨?
    Hibernate宸ュ叿綾諱富瑕佸寘鎷互涓嬪姛鑳?
    (1)Hibernate鐨勫垵濮嬪寲鎿嶄綔
      榪欎釜鍔熻兘涓嶆斁鍦ㄤ換浣曟柟娉曚腑,閲囩敤闈欐佺紪鐮佺殑澶勭悊鏂瑰紡,鍦ㄥ璞$殑鍒濆鍖栫殑鏃跺欒
      璋冪敤涓嬈″氨鍙互浜?
    (2)寰楀埌褰撳墠鐨勯厤緗俊鎭?/em>
      榪欎釜鏂規硶鍙互寰楀埌褰撳墠鐨勯厤緗俊鎭?浠ヤ究浜庡姩鎬佽繘琛岄厤緗弬鏁扮殑淇敼.hibernate
      鐨勯厤緗俊鎭彧鍦℉ibernate鍒濆鍖栫殑鏃跺欎嬌鐢ㄤ竴嬈?鍦ㄥ畬鎴愬垵濮嬪寲涔嬪悗瀵歸厤緗枃浠?br>  鎴栬匔onfiguration瀵硅薄鎵鍋氱殑淇敼灝嗕笉浼氱敓鏁?
    (3)寰楀埌SessionFactory瀵硅薄鐨勫疄渚?/em>
      榪欎釜鏂規硶鐢ㄤ簬寰楀埌褰撳墠緋葷粺榪愯鏃剁殑SessionFactory瀵硅薄鐨勫疄渚?榪欎釜瀵硅薄鐨勫疄渚?br>  瀵逛簬鏁翠釜緋葷粺鑰岃█鏄叏灞鍞竴鐨?
    (4)閲婃斁鍚勭璧勬簮
      榪欎釜鏂規硶鐢ㄤ簬緇堟Hibernate鐨勬姤鍔″悗,閲婃斁鍚勭Hibernate鎵浣跨敤鐨勮祫婧?铏界劧榪欎釜
      鏂規硶鍑犱箮涓嶄細鐢ㄥ埌,浣嗗浜庣敵璇瘋祫婧愮殑鍙婃椂閲婃斁鏄瘡涓▼搴忓簲璇ユ帉鎻$殑鍩烘湰鍘熷垯.
    (5)閲嶅緩SessionFactory
      鐢變簬SessionFactory瀵逛簬鏁翠釜Hibernate搴旂敤鏄敮涓鐨?騫朵笖鏄湪Hibernate鍒濆鍖?br>  涔嬪悗寤虹珛濂界殑,鑰屼笖瀵逛簬閰嶇疆鏂囦歡鐨勪慨鏀逛篃涓嶄細褰卞搷鍒板凡緇忓垵濮嬪寲鐨凷essionFactory
      瀵硅薄.閭d箞濡備綍鎵嶈兘浣夸慨鏀圭殑閰嶇疆淇℃伅瀵笻ibernate璧蜂綔鐢ㄥ憿.榪欏氨闇瑕侀噸寤篠essionFactory
      瀵硅薄瀹炰緥.
    (6)鎷︽埅鍣ㄦ敞鍐?/em>
      鐢ㄤ簬娉ㄥ唽鎷︽埅鍣ㄥ茍閲嶅緩SessionFactory.
    HibenateUtil.java
    import javax.naming.InitialContext;
    import javax.naming.NamingException;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.hibernate.Interceptor;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.cfg.Environment;


    /**
     * 鍩虹鐨凥ibernate杈呭姪綾伙紝鐢ㄤ簬Hibernate鐨勯厤緗拰鍚姩銆?br> * <p>
     * 閫氳繃闈欐佺殑鍒濆鍖栦唬鐮佹潵璇誨彇Hibernate鍚姩鍙傛暟錛屽茍鍒濆鍖?br> * <tt>Configuration</tt>鍜?lt;tt>SessionFactory</tt>瀵硅薄銆?br> * <p>
     *
     * @author galaxy
     */
    public class HibernateUtil
    {

        private static Log log = LogFactory.getLog(HibernateUtil.class);

        // 鎸囧畾瀹氫箟鎷︽埅鍣ㄥ睘鎬у悕
        private static final String INTERCEPTOR_CLASS = "hibernate.util.interceptor_class";

        // 闈欐丆onfiguration鍜孲essionFactory瀵硅薄鐨勫疄渚嬶紙鍏ㄥ眬鍞竴鐨勶級
        private static Configuration configuration;
        private static SessionFactory sessionFactory;

        static
        {
            // 浠庣己鐪佺殑閰嶇疆鏂囦歡鍒涘緩SessionFactory
            try
            {
             // 鍒涘緩榛樿鐨凜onfiguration瀵硅薄鐨勫疄渚?br>         // 濡傛灉浣犱笉浣跨敤JDK 5.0鎴栬呮敞閲婅浣跨敤new Configuration()
             // 鏉ュ垱寤篊onfiguration()瀵硅薄鐨勫疄渚?br>            configuration = new Configuration();

                // 璇誨彇hibernate.properties鎴栬卙ibernate.cfg.xml鏂囦歡
                configuration.configure();

                // 濡傛灉鍦ㄩ厤緗枃浠朵腑閰嶇疆浜嗘嫤鎴櫒錛岄偅涔堝皢鍏惰緗埌configuration瀵硅薄涓?br>            String interceptorName = configuration.getProperty(INTERCEPTOR_CLASS);
                if (interceptorName != null)
                {
                    Class interceptorClass =
                            HibernateUtil.class.getClassLoader().loadClass(interceptorName);
                    Interceptor interceptor = (Interceptor)interceptorClass.newInstance();
                    configuration.setInterceptor(interceptor);
                }

                if (configuration.getProperty(Environment.SESSION_FACTORY_NAME) != null)
                {
                    // 璁〩ibernate灝哠essionFacory緇戝畾鍒癑NDI
                    configuration.buildSessionFactory();
                }
                else
                {
                    // 浣跨敤闈欐佸彉閲忔潵淇濇寔SessioFactory瀵硅薄鐨勫疄渚?br>                sessionFactory = configuration.buildSessionFactory();
                }

            }
            catch (Throwable ex)
            {
                // 杈撳嚭寮傚父淇℃伅
                log.error("Building SessionFactory failed.", ex);
                ex.printStackTrace();
                throw new ExceptionInInitializerError(ex);
            }
        }

        /**
         * 榪斿洖鍘熷鐨凜onfiguration瀵硅薄鐨勫疄渚?br>     *
         * @return Configuration
         */
        public static Configuration getConfiguration()
        {
            return configuration;
        }

        /**
         * 榪斿洖鍏ㄥ眬鐨凷essionFactory瀵硅薄鐨勫疄渚?br>     *
         * @return SessionFactory
         */
        public static SessionFactory getSessionFactory()
        {
            SessionFactory sf = null;
            String sfName = configuration.getProperty(Environment.SESSION_FACTORY_NAME);
            if ( sfName != null)
            {
                log.debug("Looking up SessionFactory in JNDI.");
                try
                {
                    sf = (SessionFactory) new InitialContext().lookup(sfName);
                }
                catch (NamingException ex)
                {
                    throw new RuntimeException(ex);
                }
            }
            else
            {
                sf = sessionFactory;
            }
            if (sf == null)
                throw new IllegalStateException( "SessionFactory not available." );
            return sf;
        }

        /**
         * 鍏抽棴褰撳墠鐨凷essionFactory騫朵笖閲婃斁鎵鏈夌殑璧勬簮
         */
        public static void shutdown()
        {
            log.debug("Shutting down Hibernate.");
            // Close caches and connection pools
            getSessionFactory().close();

            // Clear static variables
            configuration = null;
            sessionFactory = null;
        }


        /**
         * 浣跨敤闈欐佺殑Configuration瀵硅薄鏉ラ噸鏂版瀯寤篠essionFactory銆?br>     */
         public static void rebuildSessionFactory()
         {
            log.debug("Using current Configuration for rebuild.");
            rebuildSessionFactory(configuration);
         }

        /**
         * 浣跨敤鎸囧畾鐨凜onfiguration瀵硅薄鏉ラ噸鏂版瀯寤篠essionFactory瀵硅薄銆?br>     *
         * @param cfg
         */
         public static void rebuildSessionFactory(Configuration cfg)
         {
            log.debug("Rebuilding the SessionFactory from given Configuration.");
            synchronized(sessionFactory)
            {
                if (sessionFactory != null && !sessionFactory.isClosed())
                    sessionFactory.close();
                if (cfg.getProperty(Environment.SESSION_FACTORY_NAME) != null)
                    cfg.buildSessionFactory();
                else
                    sessionFactory = cfg.buildSessionFactory();
                configuration = cfg;
            }
         }

        /**
         * 鍦ㄥ綋鍓峉essionFactory涓敞鍐屼竴涓嫤鎴櫒
         */
        public static SessionFactory registerInterceptorAndRebuild(Interceptor interceptor)
        {
            log.debug("Setting new global Hibernate interceptor and restarting.");
            configuration.setInterceptor(interceptor);
            rebuildSessionFactory();
            return getSessionFactory();
        }

        /**
         * 鑾峰緱鎷︽埅鍣ㄥ璞?br>     *
         * @return Interceptor
         */
        public static Interceptor getInterceptor()
        {
            return configuration.getInterceptor();
        }

        /**
         * 鎻愪氦褰撳墠浜嬪姟錛屽茍寮濮嬩竴涓柊鐨勪簨鍔?br>     */
        public static void commitAndBeginTransaction()
        {
         sessionFactory.getCurrentSession().getTransaction().commit();
         sessionFactory.getCurrentSession().beginTransaction();
        }
    }

     



    Ke 2007-08-29 19:12 鍙戣〃璇勮
    ]]>
    主站蜘蛛池模板: 亚洲无人区视频大全| 91亚洲精品视频| 性生大片视频免费观看一级 | 精品亚洲综合在线第一区| 免费国产va视频永久在线观看| 成人爱做日本视频免费| 在线观看亚洲专区| 免费观看国产精品| 日韩一级片免费观看| 国产亚洲av片在线观看18女人| 久久国产乱子伦精品免费午夜| 亚洲精品天堂成人片AV在线播放| 一二三四在线播放免费观看中文版视频 | 57PAO成人国产永久免费视频| 亚洲另类小说图片| 日韩免费视频网站| 日韩少妇内射免费播放| 亚洲国产精品乱码一区二区| 热re99久久6国产精品免费| 亚洲1区1区3区4区产品乱码芒果 | 亚洲国产综合无码一区二区二三区| 免费激情网站国产高清第一页| 色噜噜AV亚洲色一区二区| 久久99毛片免费观看不卡| 亚洲宅男天堂a在线| 女性自慰aⅴ片高清免费| 一级毛片一级毛片免费毛片| 亚洲成A人片在线观看无码不卡 | 国产又粗又猛又爽又黄的免费视频 | 韩国免费三片在线视频| 成人一级免费视频| 91久久亚洲国产成人精品性色| 好大好深好猛好爽视频免费| 四虎一区二区成人免费影院网址 | 精品无码无人网站免费视频| 亚洲精品欧美综合四区| 亚洲日韩aⅴ在线视频| 好先生在线观看免费播放| aa午夜免费剧场| 亚洲无mate20pro麻豆| 最新国产AV无码专区亚洲|