锘??xml version="1.0" encoding="utf-8" standalone="yes"?>成人婷婷网色偷偷亚洲男人的天堂 ,亚洲一区二区三区AV无码,亚洲成a人片在线看http://www.tkk7.com/topquan/category/23898.html鍒嗕韓浠峰?---鎴愬氨浣犳垜----鎴戠殑鍗氬----浣犵殑瀹?/description>zh-cnSat, 07 Jul 2007 11:21:06 GMTSat, 07 Jul 2007 11:21:06 GMT60Hibernate-----The first Programhttp://www.tkk7.com/topquan/articles/62034.htmltopquantopquanSun, 06 Aug 2006 01:05:00 GMThttp://www.tkk7.com/topquan/articles/62034.htmlhttp://www.tkk7.com/topquan/comments/62034.htmlhttp://www.tkk7.com/topquan/articles/62034.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/62034.htmlhttp://www.tkk7.com/topquan/services/trackbacks/62034.html涓銆佸噯澶囧伐浣?/font>

      鍏跺疄Hibernate鏈韓鏄釜鐙珛鐨勬鏋訛紝瀹冧笉闇瑕佷換浣晈eb server鎴朼pplication server鐨勬敮鎸併傜劧鑰岋紝澶у鏁扮殑Hibernate鍏ラ棬浠嬬粛閮藉姞鍏ヤ簡寰堝闈濰ibernate鐨勪笢瑗匡紝姣斿: Tomcat, Eclipse, Log4J,Struts, XDoclet, 鐢氳嚦JBoss銆傝繖瀹規槗璁╀漢浜х敓Hibernate澶嶆潅闅炬噦鐨勮瑙o紝鐗瑰埆鏄墦鍑諱簡鍒濆鑰呯殑縐瀬鎬с?/p>

鍦ㄨ繖綃囨枃绔犲皢涓嶆秹鍙奅clipse, log4j, Struts, Tomcat, XDoclet錛屽拰JBoss銆傛湰鏂囩殑鐩殑鏄紨紺轟竴涓婬ibernate鐨勫畨瑁呰繃紼嬩互鍙婃渶鍩烘湰鐨勫姛鑳斤紝浠庤岀粰鍒濆鑰呬竴涓綆寰椾笉鑳藉啀浣庣殑鍏ラ棬闂ㄦ銆?/p>


涓嬭澆鏂囦歡

浣犻渶瑕丣ava SDK銆?Hibernate鍖呫丄nt鍖呫佸拰JDBC Driver銆?/p>

1銆丠ibernate鍖呬笅杞藉湴鍧:
http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

2銆丄nt鍖呬笅杞藉湴鍧:
http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip

3銆丣DBC Driver瑕佹牴鎹綘鐢ㄧ殑database鏉ュ畾錛屼竴鑸琩atabase瀹樻柟緗戠珯涓婇兘浼氭湁銆侶ibernate鏀寔甯哥敤鐨刣atabase錛屾瘮濡?MySQL, Oracle, PostgreSQL, 鍜孧S-SQL Server銆傝繖浜涙暟鎹簱閮芥湁JDBC Driver:

Oracle JDBC Driver涓嬭澆鍦板潃(涓嬭澆鍓嶅繀欏誨悓鎰廜racle鍗忚涔?
http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

MySQL JDBC Driver涓嬭澆鍦板潃
http://dev.mysql.com/downloads/connector/j/3.0.html

PostgreSQL JDBC Driver涓嬭澆鍦板潃
http://jdbc.postgresql.org/download.html

MS-SQL Server JDBC Driver涓嬭澆鍦板潃
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en

4銆佸皢Hibernate鍖呭拰Ant鍖呭垎鍒В鍘嬭嚦c:\dev\涓?姝ょ洰褰曚笉閲嶈錛屼綘鍙互鎹㈠叾瀹冧換浣曠洰褰?銆?/p>

閰嶇疆鐜

1>銆佷綘闇瑕佹坊鍔犱竴涓柊鐨勭幆澧冨彉閲? ANT_HOME錛岃瀹冩寚鍚慶:\dev\<浣犵殑ANT鍖呮墍鍦ㄧ洰褰?gt;銆傚茍鍦≒ATH鐜鍙橀噺閲屾坊鍔?ANT_HOME%\bin銆?/p>

2>銆佷綘闇瑕佹坊鍔犱竴涓柊鐨勭幆澧冨彉閲? JAVA_HOME錛岃瀹冩寚鍚戜綘鐨刯2sdk鏍圭洰褰曘傚茍鍦≒ATH鐜鍙橀噺閲屾坊鍔?JAVA_HOME%\bin銆?/p>

3>銆佸垱寤轟竴涓」鐩洰褰曪紝姣斿c:\workspace\My1stHibernate銆?/p>

鍦ㄩ」鐩洰褰曚笅錛屽彟澶栧垱寤轟笁涓洰褰? src, classes, lib銆?/p>

鍦╨ib鐩綍涓嬶紝鍒涘緩涓や釜鐩綍: hibernate鍜宒b銆?/p>

榪欐牱浣犳湁浜嗗涓嬬殑鏂囦歡緇撴瀯:

c:\workspace\My1stHibernate\
c:\workspace\My1stHibernate\src
c:\workspace\My1stHibernate\classes
c:\workspace\My1stHibernate\lib
c:\workspace\My1stHibernate\lib\hibernate
c:\workspace\My1stHibernate\lib\db

4銆佸皢c:\dev\<浣犵殑Hibernate鍖呮墍鍦ㄧ洰褰?gt;\hibernate2.jar鏂囦歡copy鍒癱:\workspace\My1stHibernate\lib\hibernate涓嬨?/p>

灝哻:\dev\<浣犵殑Hibernate鍖呮墍鍦ㄧ洰褰?gt;\lib\涓嬬殑鎵鏈夋枃浠跺悓鏍穋opy鍒癱:\workspace\My1stHibernate\lib\hibernate涓嬨?/p>

灝嗕綘鐨凧DBC Driver鏂囦歡(涓鑸槸涓涓猨ar鏂囦歡)copy鍒癱:\workspace\My1stHibernate\lib\db涓嬨?br>
浜屻佸垱寤烘暟鎹簱

1銆佺敤浣犳渶鍠滅埍鐨刣atabase杞歡錛屽垱寤轟竴涓猦ibernate_test鐨勬暟鎹簱銆?/p>

2銆佸湪姝ゆ暟鎹簱涓嬶紝鏂板緩涓涓猼able鍚嶄負CUSTOMER

CREATE TABLE CUSTOMER
(
    CID INTEGER NOT NULL PRIMARY KEY,
    USERNAME VARCHAR(12) NOT NULL,
    PASSWORD VARCHAR(12)
);

涓夈佺紪鍐橨ava鏂囦歡錛圥OJO錛?/font>

public class Customer {
   
    private int id;
    private String username;
    private String password;


    public int getId() {
        return id;
    }

    public String getPassword() {
        return password;
    }

    public String getUsername() {
        return username;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

灝嗘綾誨瓨涓篶:\workspace\My1stHibernate\src\Customer.java鏂囦歡銆?/p>

鍥涖佺紪鍐橳est綾?/font>

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;

public class Test {

    public static void main(String[] args) {

        try {
            SessionFactory sf =
                new Configuration().configure().buildSessionFactory();
            Session session = sf.openSession();
            Transaction tx = session.beginTransaction();

            for (int i = 0; i < 200; i++) {
                Customer customer = new Customer();
                customer.setUsername("customer" + i);
                customer.setPassword("customer");
                session.save(customer);
            }

            tx.commit();
            session.close();

        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }
}

灝嗘綾誨瓨涓篶:\workspace\My1stHibernate\src\Test.java鏂囦歡銆?br> 

浜斻佸垱寤篐ibernate鏄犲皠鏂囦歡

鍥犱負榪欓噷鍙湁涓涓狢lass --- Customer 鍜屼竴涓猅able --- CUSTOMER錛屼綘鍙渶瑕佸緩绔嬩竴涓槧灝勬枃浠?-- Customer.hbm.xml錛屾潵瀵瑰簲Customer綾誨拰CUSTOMER琛ㄤ箣闂寸殑鍏崇郴銆?/p>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "

<hibernate-mapping>
    <class name="Customer" table="CUSTOMER">
        <id name="id" column="CID">
            <generator class="increment" />
        </id>
        <property name="username" column="USERNAME" />
        <property name="password" column="PASSWORD" />
    </class>
</hibernate-mapping>

鎶婃鏂囦歡瀛樹負c:\workspace\My1stHibernate\src\Customer.hbm.xml錛屽拰Customer.java鏀懼湪鍚屼竴鐩綍涓嬨?/p>


鍏佺紪鍐橝nt build.xml鏂囦歡

浣犱笉涓瀹氳鐭ラ亾榪欎釜build.xml鐨勭粏鑺傦紝鍏跺疄Ant涔熶笉鏄疕ibernate鎵蹇呴』鐨勩傝繖閲岀敤Ant鏄負浜嗙畝鍖栦竴浜涗換鍔★紝姣斿: 緙栬瘧銆乧opy銆佽繍琛岋紝絳夈?/p>

<?xml version="1.0" ?>

<project name="My1stHibernate" default="build" basedir=".">

    <property name="base.dir" value="." />
    <property name="src.dir" value="src" />
    <property name="lib.dir" value="lib" />
    <property name="build.dir" value="classes" />

    <path id="myclasspath">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <pathelement location="${build.dir}" />
    </path>

    <target name="init">
        <mkdir dir="${build.dir}" />
    </target>
   
    <target name="build" depends="init" description="compile the source files">
        <javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
        <copy todir="${build.dir}" >
            <fileset dir="${src.dir}" >
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

    <target name="run" depends="build">
        <java classpathref="myclasspath" classname="Test" fork="true" />
    </target>

    <target name="clean">
        <delete includeEmptyDirs="true">
            <fileset dir="${build.dir}" />
        </delete>
    </target>

</project>

涓冦侀厤緗瓾ibernate鎻忚堪鏂囦歡

Hibernate鎻忚堪鏂囦歡鍙互鏄竴涓猵roperties鎴杧ml 鏂囦歡錛屽叾涓渶閲嶈鐨勬槸瀹氫箟鏁版嵁搴撶殑榪炴帴銆傛垜榪欓噷鍒楀嚭鐨勬槸涓涓猉ML鏍煎紡鐨刪ibernate.cfg.xml鎻忚堪鏂囦歡銆?/p>

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "

<hibernate-configuration>
   
    <session-factory name="java:/hibernate/HibernateFactory">
       
        <property name="show_sql">true</property>
        <property name="connection.driver_class">
            oracle.jdbc.driver.OracleDriver <!-- 榪欓噷鏄疧racle 9i鐨凧DBC driver class鍚?-->
        </property>
        <property name="connection.url">
            jdbc:oracle:oci8:@hibernate_test <!-- 榪欓噷鏄疧racle鐨刪ibernate_test鏁版嵁搴揢RL -->
        </property>
        <property name="connection.username">
            浣犵殑鏁版嵁搴撶敤鎴峰悕
        </property>
        <property name="connection.password">
            浣犵殑鏁版嵁搴撳瘑鐮?br>        </property>
        <property name="dialect">
            net.sf.hibernate.dialect.Oracle9Dialect <!-- 榪欓噷鏄疧racle 9i鐨凞ialect -->
        </property>
       
        <mapping resource="Customer.hbm.xml" /> <!-- 鎸囧畾Customer鐨勬槧灝勬枃浠?-->
       
    </session-factory>
   
</hibernate-configuration>

濡傛灉浣犵敤鐨勪笉鏄疧racle 9i錛屽彲鍒癈:\dev\<浣犵殑Hibernate鍖呮墍鍦ㄧ洰褰?gt;\src\hibernate.properties鏂囦歡閲屾壘鍒頒綘鐨勬暟鎹簱錛岀劧鍚庢浛鎹互涓婄浉瀵瑰簲鐨勫箋?/p>


鍏佸紑濮嬭繍琛?/font>

鍒癱:\workspace\My1stHibernate涓嬶紝榪愯ant run銆傚鏋滀綘涓ユ牸渚濈収浠ヤ笂姝ラ錛屽簲璇ョ湅鍒?/p>

run:
        [java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
        [java] log4j:WARN Please initialize the log4j system properly.
        [java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
BUILD SUCCESSFUL

鍒頒綘鐨刪ibernate_test鏁版嵁搴撶湅涓涓嬶紝鍦–USTMOR琛ㄩ噷鏂版坊浜?00鏉¤褰曪紝浣嗕綘娌℃湁鍐欎換浣旿DBC code銆?br>浠ュ悗濡傛灉浣犺鏇存崲鏁版嵁搴擄紝鍙渶瑕佹敼鍙榟ibernate.cfg.xml鎻忚堪鏂囦歡閲岀浉搴旂殑鍊煎嵆鍙?/p>

 

 



topquan 2006-08-06 09:05 鍙戣〃璇勮
]]>
hibernate寤惰繜鍔犺澆 http://www.tkk7.com/topquan/articles/61896.htmltopquantopquanFri, 04 Aug 2006 17:20:00 GMThttp://www.tkk7.com/topquan/articles/61896.htmlhttp://www.tkk7.com/topquan/comments/61896.htmlhttp://www.tkk7.com/topquan/articles/61896.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61896.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61896.html寤惰繜鍔犺澆鐨勫璞★細
hibernate 2閽堝瀹炰綋瀵硅薄鍜岄泦鍚?br>hibernate 3鍚屾椂鎻愪緵浜嗗睘鎬х殑寤惰繜鍔犺澆鍔熻兘銆?br>鍏朵腑瀵歸泦鍚堢殑寤惰繜鍔犺澆鐗規ф剰涔夋渶涓洪噸澶с?/div>

瀹炰綋瀵硅薄鐨勫歡榪熷姞杞?
1.鍦╤ibernate閰嶇疆鏂囦歡涓殑class鎸囧畾

闆嗗悎綾誨瀷鐨勫歡榪熷姞杞斤細
鍦╯et涓寚瀹歭azy=true
榪欐牱鍙湁瀹為檯鍔犺澆涓庡璞$浉鍏寵仈鐨勯泦鍚堝璞$殑鏃跺欙紝鍐嶉氳繃session浠庢暟鎹簱涓姞杞藉疄闄呯殑鏁版嵁闆嗐?br>Hibernate.initialize鏂規硶鍙互寮哄埗Hibernate绔嬪嵆鍔犺澆鍏寵仈鐨勫璞¢泦錛屼緥濡傦細
Hibernate.initialize(user.getAddress());
闆嗗悎綾誨瀷鐨勭紦瀛橈細
濡傛灉涓烘煇涓泦鍚堢被璁懼畾浜嗙紦瀛橈紝濡?br><set
    name="address"
    table="t_address"
    lazy="true"
    ......
>
    <cache usage="read-only"/>
    <key column="user_id" />
    <one-to-many class="cn.blogjava.TAddress" />
</set>
Hibernate瀵歸泦鍚堢被鍨嬭繘琛岀紦瀛樼殑鏃跺欙紝鍒嗕袱閮ㄥ垎淇濆瓨銆傞鍏堟槸榪欎釜闆嗗悎涓墍鏈夊疄浣撶殑id鍒楄〃錛屽叾嬈℃墠鏄悇涓疄浣撳璞°?br>榪欓噷鍒跺畾浜哻ache usage="read-only"鍙細浣垮緱Hibernate瀵規暟鎹儲寮曡繘琛岀紦瀛樸備篃灝辨槸璇村彧緙撳瓨浜嗛泦鍚堜腑鐨勬暟鎹儲寮曪紝騫朵笉鍖呭惈闆嗗悎涓殑鍚勪釜瀹炰綋鍏冪礌銆?br>濡傛灉鎸囧畾cache usage="read-write"鎵嶄細瀵歸泦鍚堜腑鐨勫疄浣撹繘琛岀紦瀛樸?/p>

灞炴х殑寤惰繜鍔犺澆錛?br>鍦╬roperty鑺傜偣涓0鏄巐azy=true,鑰屼笖榪橀渶瑕佸熷姪Hibernate綾誨寮哄櫒瀵筆OJO綾葷殑浜岃繘鍒禖lass鏂囦歡榪涜寮哄寲澶勭悊銆?/p>

 

hibernate涓殑Collection
Hibernate瀵笿DK Collention鎺ュ彛鐨勭嫭绔嬪疄鐜幫細
鐢變簬浼犵粺鐨凧ava Set, Map, List瀹炵幇涓嶈兘婊¤凍瑕佹眰錛孒ibernate鏍規嵁榪欎簺鎺ュ彛鎻愪緵浜嗚嚜宸辯殑瀹炵幇銆?br>Hibernate鐨勫疄鐜幫細
鏃犲簭闆嗭細Set, Bag, Map
鏈夊簭闆嗭細List
Bag鐩稿綋浜庝竴涓厑璁擱噸澶嶅厓绱犲瓨鍦ㄧ殑Set銆?br>鍥犱負Hibernate鏄嚜宸辯殑Collection瀹炵幇錛屾墍浠ュ涓嬭鍙ヤ細鍑洪敊錛?br>Set hset = (HashSet)user.getAddresses();
浼氬湪榪愯鏈熸姤鍛婁竴涓猨ava.lang.ClassCastException,鍥犱負瀹為檯涓婅繑鍥炵殑鏄竴涓被鍨嬩負org.hibernate.collention.Set鐨勫璞°?br>鎵鏈夋垜浠湪鍐橮OJO鏃訛紝蹇呴』鐢↗DK Collection Interface(濡係et, Map)錛岃岄潪鐗瑰畾鐨凧DK Collection瀹炵幇綾?濡侶ashSet, HashMap)澹版槑Collection鍨嬪睘鎬х殑鍘熷洜銆備緥濡傦細
搴旇鏄痯rivate Set addresses;
鑰屼笉鏄痯rivate HashSet addresses;

collection綾誨瀷灞炴х殑淇濆瓨榪囩▼銆?br>渚嬪
public class TUser implements Serializable {
 private Set addresses = new HashSet();
        ......
}

鐒跺悗鍒涘緩涓涓猅User瀹炰緥鍚庯紝灝卞彲浠ヤ負鍏舵坊鍔犲叧鑱旂殑address瀵硅薄錛?br>TUser user = new TUser();
TAddress addr = new TAddress();
addr.setAddress("HongKong");
user.getAddress().add(addr);
session.save(user);
user瀵硅薄鍦ㄧ粡榪嘓ibernate澶勭悊鍚庡彂鐢熶簡鍙樺寲錛岄鍏堬紝鐢變簬insert鎿嶄綔錛屼駭鐢熶簡id鍊鹼紝騫跺~鍏呭埌user瀵硅薄鐨刬d灞炴э紝鍙︿竴鏂歸潰Hibernate浣跨敤浜嗚嚜宸辯殑collection瀹炵幇瀵箄ser涓殑HashSet鍨媋ddresses灞炴ц繘琛屼簡鏇挎崲錛屽茍鐢ㄦ暟鎹鍏惰繘琛屼簡濉厖銆?/p>

topquan 2006-08-05 01:20 鍙戣〃璇勮
]]>
hibernate鏁版嵁鍔犺澆 http://www.tkk7.com/topquan/articles/61894.htmltopquantopquanFri, 04 Aug 2006 17:19:00 GMThttp://www.tkk7.com/topquan/articles/61894.htmlhttp://www.tkk7.com/topquan/comments/61894.htmlhttp://www.tkk7.com/topquan/articles/61894.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61894.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61894.html鍗曚竴鏁版嵁鍔犺澆錛歋ession.get/load
鍧囧彲浠ユ牴鎹寚瀹氱殑瀹炰綋綾誨拰id浠庢暟鎹簱涓鍙栬褰曪紝騫惰繑鍥炰笌涔嬪搴旂殑瀹炰綋瀵硅薄銆?br>鍖哄埆錛?br>1.濡傛灉鏈兘鍙戠幇絎﹀悎鏉′歡鐨勮褰曪紝get鏂規硶榪斿洖null,鑰宭oad鏂規硶浼氭姏鍑轟竴涓狾bjectNotFoundException銆?br>2.Load鏂規硶鍙繑鍥炲疄浣撶殑浠g悊綾誨疄渚嬶紝鑰実et鏂規硶姘歌繙鐩存帴榪斿洖瀹炰綋綾匯?br>3.load鏂規硶鍙互鍏呭垎鍒╃敤鍐呴儴緙撳瓨鍜屼簩綰х紦瀛樹腑鐨勭幇鏈夋暟鎹紝鑰実et鏂規硶浠呭湪鍐呴儴緙撳瓨涓煡鎵撅紝濡傛灉娌℃湁鍙戠幇瀵瑰簲鐨勬暟鎹紝灝嗚秺榪囦簩綰х紦瀛橈紝鐩存帴璋冪敤SQL瀹屾垚鏁版嵁璇誨彇銆?br>鏁版嵁鍔犺澆鐨勮繃紼嬶細
1.鍦ㄤ竴綰х紦瀛樹腑錛屾牴鎹疄浣撶被鍨嬪拰id榪涜鏌ユ壘錛屽鏋滃湪絎竴綰х紦瀛樹腑鍛戒腑錛屼笖鏁版嵁鐘舵佸悎娉曪紝鍒欑洿鎺ヨ繑鍥炪?br>2.Session浼氬湪褰撳墠"NonExists"璁板綍涓繘琛屾煡鎵撅紝濡傛灉鍦?NonExists"璁板綍涓瓨鍦ㄥ悓鏍風殑鏉′歡錛岃繑鍥瀗ull銆?br>3.瀵筶oad鏂規硶鑰岃█錛屽鏋滃唴閮ㄧ紦瀛樹腑娌℃硶鐜版湁鏁堟暟鎹紝鏌ヨ浜岀駭緙撳瓨錛屽懡涓垯榪斿洖銆?br>4.濡傛灉緙撳瓨涓棤鏈夋晥鏁版嵁錛屽彂璧鋒暟鎹簱鏌ヨ鎿嶄綔(Select SQL)錛屽鏋滅粡榪囨煡璇㈡湭鍙戠幇瀵瑰簲璁板綍錛屽皢姝ゆ鏌ヨ鐨勪俊鎭湪"NonExists"涓姞浠ヨ褰曪紝榪斿洖null.
5.鏍規嵁鏄犲皠閰嶇疆鍜孲elect SQL鏌ヨ寰楀埌鐨凴esultSet錛屽垱寤哄搴旂殑鏁版嵁瀵硅薄銆?br>6.灝嗗璞$撼鍏ヤ竴綰х紦瀛樸?br>7.鎵цInterceptor.onLoad鏂規硶(濡傛灉鏈夊搴旂殑Interceptor)
8.灝嗘暟鎹撼鍏ヤ簩綰х紦瀛?br>9.濡傛灉鏁版嵁瀵硅薄瀹炵幇浜哃ifeCycle鎺ュ彛錛屽垯璋冪敤鏁版嵁瀵硅薄鐨刼nLoad鏂規硶銆?br>10.榪斿洖鏁版嵁瀵硅薄銆?/div>


鎵歸噺鏌ヨ錛歋ession.find/iterate
鏌ヨ鎬ц兘寰寰鏄郴緇熸ц兘琛ㄧ幇鐨勪竴涓噸瑕佹柟闈紝鏌ヨ鏈哄埗鐨勪紭鍔e緢澶х▼搴︿笂鍐沖畾浜嗙郴緇熺殑鏁翠綋鎬ц兘銆傝繖涓鍩熷線寰涔熷瓨鍦ㄦ渶澶х殑鎬ц兘璋冩暣絀洪棿銆?/p>

hibernate2涓璖ession.find()瀵瑰簲浜?涓殑session.createQuery().list();
hibernate2涓璖ession.iterate()瀵瑰簲浜?涓殑session.createQuery().iterate();
find鍜宨terate鍖哄埆錛?br>find鏂規硶閫氳繃涓鏉elect SQL瀹炵幇浜嗘煡璇㈡搷浣滐紝鑰宨terate鏂規硶瑕佹墽琛屽鏉elect SQL.
iterate絎竴嬈℃煡璇㈣幏鍙栨墍鏈夌鍚堟潯浠剁殑璁板綍鐨刬d錛岀劧鍚庡啀鏍規嵁鍚勪釜id浠庡簱琛ㄤ腑璇誨彇瀵瑰簲鐨勮褰曪紝榪欐槸涓涓吀鍨嬬殑N+1嬈$殑鏌ヨ闂錛屽鏋滅鍚堟潯浠惰褰曟湁10000鏉★紝灝遍渶瑕佹墽琛?0001鏉elect SQL錛屽彲鎯蟲ц兘浼氬浣曠殑宸?/p>

閭d負浠涔堣鎻愪緵iterator鏂規硶錛岃屼笉鍙槸鎻愪緵楂樻晥鐜囩殑find鏂規硶錛?/p>

鍘熷洜1.涓巋ibernate緙撳瓨鏈哄埗瀵嗗垏鐩稿叧
find鏂規硶瀹為檯涓婃槸鏃犳硶鍒╃敤緙撳瓨鐨勶紝瀹冨緙撳瓨鍙啓涓嶈銆?br>find鏂規硶鍙墽琛屼竴嬈QL鏌ヨ錛屽畠鏃犳硶鍒ゆ柇緙撳瓨涓粈涔堟牱鐨勬暟鎹槸絎﹀悎鏉′歡鐨勶紝涔熸棤娉曚繚璇佹煡璇㈢粨鏋滅殑瀹屾暣鎬с傝宨terate鏂規硶錛屼細棣栧厛鏌ヨ鎵鏈夌鍚堟潯浠惰褰曠殑id錛岀劧鍚庢牴鎹甶d鍘葷紦瀛樹腑鎵撅紝濡傛灉緙撳瓨涓湁璇d錛屽氨榪斿洖錛屾病鏈夊彲浠ユ牴鎹甶d鍐嶅幓鏁版嵁搴撴煡璇€?br>String hql = "from TUser where age > ?";
List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);
Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);
欏哄簭鎵ц錛宨terate鏂規硶鍙細鎵ц涓嬈QL鏌ヨ錛屽氨鏄煡鎵緄d錛岀劧鍚庢牴鎹甶d灝卞彲浠ヤ粠緙撳瓨涓幏寰楁暟鎹?/p>

String hql = "from TUser where age > ?";
List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);
userList = session.find(hql, new Integer(18), Hibernate.INTEGER);
緙撳瓨鏄笉璧蜂綔鐢ㄧ殑銆?br>濡傛灉鐩爣鏁版嵁璇誨彇鐩稿杈冧負棰戠箒錛岄氳繃iterate榪欑鏈哄埗錛屼細鍑忓皯鎬ц兘鎹熻椼?/p>

鍘熷洜2.鍐呭瓨浣跨敤涓婄殑鑰冭檻
find鏂規硶灝嗕竴嬈¤幏寰楃殑鎵鏈夎褰曞茍灝嗗叾璇誨叆鍐呭瓨銆傚鏋滄暟鎹噺澶ぇ錛屽彲鑳戒細瑙﹀彂OutOfMemoryError錛屼粠鑰屽鑷寸郴緇熷紓甯搞傝В鍐蟲柟妗堜箣涓灝辨槸緇撳悎iterate鏂規硶鍜宔vict鏂規硶閫愭潯瀵硅褰曡繘琛屽鐞嗭紝灝嗗唴瀛樻秷鍖栦繚鎸佸湪涓涓彲浠ユ帴鍙楃殑鑼冨洿涔嬪唴銆傚錛?br>String hql = "from TUser where age > ?";
Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);
while(it.hasNext()) {
    TUser user = (TUser)it.next();
   
    //灝嗗璞′粠涓綰х紦瀛樹腑鍒犻櫎
    session.evict(user);

    //浜岀駭緙撳瓨鍙互璁懼畾鏈澶х紦瀛橀噺,杈懼埌鍚庤嚜鍔ㄥ杈冭佹暟鎹繘琛屽簾闄?浣嗕篃鍙互閫氳繃緙?br>    //鐮佺Щ闄?榪欐牱鏈夊姪浜庝繚鎸佹暟鎹湁鏁堟с?br>    sessionFactory.evict(TUser.class, user.getID());
}


鎵歸噺鏁版嵁澶勭悊鐨勭紦瀛樺悓姝ラ棶棰?br>1.hibernate 2:
session.delete("from TUser");
浼氬厛鏌ヨ鍑篿d錛岀劧鍚庨愪釜id鎵ц delete from T_User where id = ?;
榪欐牱閫犳垚鏁堢巼浣庝笅銆?br>涓轟粈涔堜笉鐩存帴閲囩敤涓鏉elete SQL錛熸槸鍥犱負ORM瑕佽嚜鍔ㄧ淮鎸佸叾鍐呴儴鐘舵佸睘鎬э紝蹇呴』鐭ラ亾鐢ㄦ埛浣滀簡浠涔堟搷浣溿傚繀欏誨厛浠庢暟鎹簱涓幏寰楀緟鍒犻櫎瀵硅薄錛岀劧鍚庢牴鎹繖浜涘璞″鍐呴儴緙撳瓨鍜屼簩綰х紦瀛樼殑鏁版嵁榪涜鏁寸悊錛屼互淇濇寔鍐呭瓨鐘舵佷笌鏁版嵁搴撶殑涓鑷存с?br>鍗曟墽琛屼竴鏉″垹闄よ鍙ワ紝鍒犻櫎浜嗕粈涔堟暟鎹紝鍙湁鏁版嵁搴撶煡閬擄紝ORM鏃犳硶寰楃煡銆備笅嬈$敤鎴蜂粠緙撳瓨涓鍑虹殑鏁版嵁錛屽緢鍙兘灝辨槸琚垹闄ょ殑鏁版嵁錛屼粠鑰屽鑷撮昏緫閿欒銆傚綋鐒訛紝濡傛灉ORM鍙互鏍規嵁DELETE SQL瀵圭紦瀛樹腑鏁版嵁榪涜澶勭悊錛屽皢緙撳瓨涓鍚堟潯浠剁殑瀵硅薄搴熼櫎錛岀劧鍚庡啀鎵цDELETE SQL
錛屼絾鏄繖鏍峰鑷寸紦瀛樼殑綆$悊澶嶆潅鎬уぇ澶у鍔?瀹為檯鐩稿綋浜庡疄鐜頒簡涓涓敮鎸丼QL鐨勫唴瀛樻暟鎹簱)錛岃繖瀵逛簬杞婚噺綰х殑ORM瀹炵幇鑰岃█澶嫑鍒諱簡銆?br>2.hibernate 3
鎬ц兘鎻愰珮銆?br>浣嗘棤娉曡В鍐崇紦瀛樺悓姝ヤ笂鐨勯棶棰橈紝鏃犳硶淇濊瘉緙撳瓨鏁版嵁鐨勪竴鑷存湁鏁堟с?br>Tuser user = (TUser)session.load(TUser.class, new Integer(1));

//閫氳繃Bulk delete/update 鍒犻櫎id=1鐨勭敤鎴瘋褰?br>Transaction tx = session.beginTransaction();
String hql = "delete TUser where id=1";
Query query = session.createQuery(hql);
query.executeUpdate();
tx.commit();

//鍐嶆灝濊瘯鍔犺澆
user = (TUser)session.load(TUser.class, new Integer(1));
鍙互鐪嬪埌絎簩嬈″姞杞芥槸鎴愬姛鐨勩?/p>

topquan 2006-08-05 01:19 鍙戣〃璇勮
]]>
hibernate浜嬪姟澶勭悊鍜岄攣 http://www.tkk7.com/topquan/articles/61893.htmltopquantopquanFri, 04 Aug 2006 17:18:00 GMThttp://www.tkk7.com/topquan/articles/61893.htmlhttp://www.tkk7.com/topquan/comments/61893.htmlhttp://www.tkk7.com/topquan/articles/61893.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61893.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61893.html浜嬪姟澶勭悊錛?br>Hibernate鏈韓騫朵笉鍏峰浜嬪姟綆$悊鑳藉姏銆傚湪浜嬪姟綆$悊灞傦紝Hibernate灝嗗叾濮旀墭緇欏簳灞傜殑JDBC鎴栬匤TA錛屼互瀹炵幇浜嬪姟鐨勭鐞嗕笌璋冨害銆?/div>

鍩轟簬JDBC鐨勪簨鍔★細
鏃犵枒鏄渶綆鍗曠殑瀹炵幇鏂瑰紡錛?br>session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
tx.commit();

鍩轟簬JTA鐨勪簨鍔$鐞嗭細
hibernate榛樿閲囩敤JDBC Transacion銆傚彲浠ラ氳繃閰嶇疆鏂囦歡鎸囧畾閲囩敤JTA浣滀負浜嬪姟綆$悊瀹炵幇銆?br><hibernate-configuration>
    <session-factory>
        ......
        <property name="hibernate.transaction.factory_class">
  org.hibernate.transaction.JTATransactionFactory
        </property>
    </session-factory>
</hibernate-configuration>

閿?locking)
鏀寔涓ょ閿侊細鎮茶閿佸拰涔愯閿?/p>

鎮茶閿?Pessimistic locking)錛?br>鏁版嵁搴撶殑瀹炵幇
select * from account where name='yyy' for update
閫氳繃for update瀛愬彞錛岃繖鏉¤鍙ラ攣瀹氭墍鏈夌鍚堟潯浠剁殑璁板綍錛屽湪鏈浜嬪姟鎻愪氦涔嬪墠錛屽鐣屾棤娉曚慨鏀硅繖浜涜褰曘?/p>

hibernate鐨勫疄鐜幫紝涔熸槸鍩轟簬鏁版嵁搴撶殑閿佹満鍒跺疄鐜幫細
鍔犻攣涓鑸氳繃浠ヤ笅鏂規硶瀹炵幇錛?br>Criteria.setLockMode
Query.setLockMode
Session.lock

hibernate鐨勫姞閿佹ā寮忥細
LockMode.NONE:鏃犻攣鏈哄埗
LockMode.WRITE:hibernate鍦↖nsert鍜寀pdate鏃訛紝浼氳嚜鍔ㄨ幏鍙?br>LockMode.READ:hibernate鍦ㄨ鍙栬褰曠殑鏃跺欙紝浼氳嚜鍔ㄨ幏鍙?br>浠ヤ笂3縐嶏紝鐢県ibernate鍐呴儴浣跨敤銆?/p>

LockMode.UPGRADE:鍒╃敤鏁版嵁搴撶殑for update瀛愬彞鍔犻攣
LockMode.UPGRADE_NOWAIT錛歰racle鐗瑰畾瀹炵幇錛屽埄鐢╫racle鐨刦or update nowait瀛愬彞瀹炵幇鍔犻攣銆?/p>

涔愯閿?Optimistic locking)錛?br>hibernate鍦ㄥ叾鏁版嵁璁塊棶寮曟搸涓唴緗簡涔愯閿佸疄鐜般傚彲浠ラ氳繃class鎻忚堪絎︾殑optimistic-lock灞炴х粨鍚坴ersion鎻忚堪絎︽寚瀹氥?/p>

<hibernate-mapping>
    <class
        name="org.hibernate.sample.TUser"
        table="t_user"
        dynamic-update="true"
        dynamic-insert="true"
        optimistic-lock="version"
    >
     <id>......
     </id>
      <version
         column="version"
         name="version"
         type="java.lang.Integer"
      />
    </class>
</hibernate-mapping>
娉ㄦ剰,version鑺傜偣瑕佸湪ID鑺傜偣涔嬪悗銆?br>榪欓噷錛屽0鏄庝簡涓涓獀ersion灞炴э紝鐢ㄤ簬瀛樻斁鐢ㄦ埛鐨勭増鏈俊鎭紝淇濆瓨鍦═_User琛ㄧ殑version瀛楁涓?/p>

topquan 2006-08-05 01:18 鍙戣〃璇勮
]]>
Hibernate 鏁版嵁緙撳瓨 http://www.tkk7.com/topquan/articles/61892.htmltopquantopquanFri, 04 Aug 2006 17:16:00 GMThttp://www.tkk7.com/topquan/articles/61892.htmlhttp://www.tkk7.com/topquan/comments/61892.htmlhttp://www.tkk7.com/topquan/articles/61892.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61892.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61892.html 

鍦℉ibernate涓紝緙撳瓨灝嗗湪浠ヤ笅鎯呭喌涓彂鎸ヤ綔鐢細
1.閫氳繃id[涓婚敭]鍔犺澆鏁版嵁鐨勬椂鍊?br>2.寤惰繜鍔犺澆

涓綰х紦瀛橈細
鍙堢О鍐呴儴緙撳瓨錛屼繚瀛樹簡涓庡綋鍓峴ession鐩稿叧鑱旂殑鏁版嵁瀵硅薄錛屼即闅廠ession瀹炰緥鐨勫垱寤鴻屽垱寤猴紝娑堜骸鑰屾秷浜°傚洜姝ゅ張縐版緙撳瓨涓篠ession level cache銆?/p>

涓綰х紦瀛樻甯告儏鍐典笅鍙圚ibernate鑷姩緇存姢錛屽鏋滈渶瑕佹墜鍔ㄥ共棰勶紝鍙互閫氳繃浠ヤ笅鏂規硶瀹屾垚銆?br>1.Session.evict
  灝嗘煇涓壒瀹氬璞′粠鍐呴儴緙撳瓨涓竻闄ゃ?br>2.Sessin.clear
  娓呯┖鍐呴儴緙撳瓨

浜岀駭緙撳瓨錛?br>鍙堢О涓篠essionFactory Level Cache.
瀵逛粈涔堟牱鐨勬暟鎹嬌鐢ㄤ簩綰х紦瀛橈紵
瀵規墍鏈夋暟鎹兘榪涜緙撳瓨鏄渶綆鍗曠殑鍔炴硶錛屼篃鏄渶甯哥敤鐨勫姙娉曘?br>浣嗘槸鏌愪簺鎯呭喌涓嬶紝鍙嶈屼細褰卞搷鎬ц兘錛屾瘮濡傜數璇濊垂鏌ヨ緋葷粺錛屽鏋滃疄琛岀紦瀛橈紝鍐呭瓨浼氳鍑犱箮涓嶅彲鑳藉啀琚噸鐢ㄧ殑鏁版嵁鍏呮枼錛屽鑷存ц兘涓嬮檷銆?br>濡傛灉鏁版嵁婊¤凍浠ヤ笅鏉′歡錛屽彲浠ュ皢鍏剁撼鍏ョ紦瀛樼鐞嗭細
1.鏁版嵁涓嶄細琚涓夋柟搴旂敤淇敼銆?br>2.data size鍦ㄥ彲浠ユ帴鍙楃殑鑼冨洿涔嬪唴
3.鏁版嵁鏇存柊棰戠巼杈冧綆
4.鍚屼竴鏁版嵁鍙兘浼氳緋葷粺棰戠箒寮曠敤
5.闈炲叧閿暟鎹?br>Hibernate鏈韓騫舵病鎻愪緵浜岀駭緙撳瓨鐨勪駭鍝佸寲瀹炵幇(鍙彁渚涗簡涓涓熀浜嶩ashTable鐨勭畝鍗曠紦瀛樹互渚涜皟璇?錛屽彲浠ヤ嬌鐢ㄧ涓夋柟緙撳瓨鏉ュ疄鐜般?br>榛樿閲囩敤EHCache浣滀負浜岀駭緙撳瓨瀹炵幇銆?br>EHCache org.ehcache.hibernate.Provider



topquan 2006-08-05 01:16 鍙戣〃璇勮
]]>
Hibernate Componenthttp://www.tkk7.com/topquan/articles/61886.htmltopquantopquanFri, 04 Aug 2006 16:49:00 GMThttp://www.tkk7.com/topquan/articles/61886.htmlhttp://www.tkk7.com/topquan/comments/61886.htmlhttp://www.tkk7.com/topquan/articles/61886.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61886.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61886.html灝嗗疄浣撳璞′腑鐨勯昏緫緇勬垚縐頒負component銆傚湪閰嶇疆鏂囦歡涓紝浣跨敤component鑺傜偣瀵圭粍浠惰繘琛屽0鏄庛?br>
渚嬪錛屼竴涓敤鎴鋒湁涓や釜閮ㄥ垎緇勬垚錛屽鍚嶅拰鑱旂郴鏂瑰紡銆傚鍚嶅拰鑱旂郴鏂瑰紡閮藉彲浠ヤ綔涓虹敤鎴風殑緇勬垚閮ㄥ垎銆?br>
1.琛ㄧ粨鏋勫涓?br>
use sample;
DROP TABLE t_user;

CREATE TABLE t_user (
       id 
INT NOT NULL AUTO_INCREMENT
     , age 
INT
     , firstname 
VARCHAR(50)
     , lastname 
VARCHAR(50)
     , address 
VARCHAR(200)
     , zipcode 
VARCHAR(10)
     , tel 
VARCHAR(20)
     , 
PRIMARY KEY (id)
);

2.閰嶇疆鏂囦歡
TUser.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 
        Auto-generated mapping file from
        the hibernate.org cfg2hbm engine
-->
    <class name
="cn.blogjava.component.TUser" table="t_user" catalog="sample">
        <id name
="id" type="integer">
            <column name
="id" />
            <generator class
="native" />
        </id>
        <property name
="age" type="integer">
            <column name
="age" />
        </property>
        <component name
="name" class="cn.blogjava.component.Name">
            <property name
="firstname" type="string">
                <column name
="firstname" length="50" />
            </property>
            <property name
="lastname" type="string">
                <column name
="lastname" length="50" />
            </property>
        </component>
        <component name
="contact" class="cn.blogjava.component.Contact">
            <property name
="address" type="string">
                <column name
="address" length="200" />
            </property>
            <property name
="zipcodes" type="string">
                <column name
="zipcode" length="10" />
            </property>
            <property name
="tel" type="string">
                <column name
="tel" length="20" />
            </property>
        </component>
    </class>
</hibernate-mapping>
灝員User.hbm.xml閰嶇疆鏂囦歡鍔犲叆鍒癶ibernate.cfg.xml涓幓

3.POJO綾?br>Contact.java
package cn.blogjava.component;

import java.io.Serializable;

public class Contact implements Serializable {
    
    
private String address;
    
private String zipcodes;
    
private String tel;
    
    
public String getAddress() {
        
return address;
    }
    
public void setAddress(String address) {
        
this.address = address;
    }
    
public String getTel() {
        
return tel;
    }
    
public void setTel(String tel) {
        
this.tel = tel;
    }
    
public String getZipcodes() {
        
return zipcodes;
    }
    
public void setZipcodes(String zipcodes) {
        
this.zipcodes = zipcodes;
    }
    
    
}

Name.java
package cn.blogjava.component;

import java.io.Serializable;

public class Name implements Serializable {
    
    
private String firstname;
    
private String lastname;
    
    
public String getFirstname() {
        
return firstname;
    }
    
public void setFirstname(String firstname) {
        
this.firstname = firstname;
    }
    
public String getLastname() {
        
return lastname;
    }
    
public void setLastname(String lastname) {
        
this.lastname = lastname;
    }
    
    
}

TUser.java
package cn.blogjava.component;


public class TUser  implements java.io.Serializable {
    
private Integer id;
    
private Integer age;
    
private Name name;
    
private Contact contact;
    
    
public Integer getAge() {
        
return age;
    }
    
public void setAge(Integer age) {
        
this.age = age;
    }
    
public Contact getContact() {
        
return contact;
    }
    
public void setContact(Contact contact) {
        
this.contact = contact;
    }
    
public Integer getId() {
        
return id;
    }
    
public void setId(Integer id) {
        
this.id = id;
    }
    
public Name getName() {
        
return name;
    }
    
public void setName(Name name) {
        
this.name = name;
    }
     
}

4.嫻嬭瘯綾?br>
package cn.blogjava.component;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import junit.framework.TestCase;
import junit.framework.Assert;

public class HibernateTest extends TestCase {
    
    Session session 
= null;
    
    
protected void setUp(){
        
try {
            Configuration config 
= new Configuration().configure();
            SessionFactory sessionFactory 
= config.buildSessionFactory();
            session 
= sessionFactory.openSession();
//            delete();
        } catch (HibernateException e) {
            
// TODO: handle exception
            e.printStackTrace();
        }
    }
    
    
protected void tearDown() {
        
try {
            session.close();
        } 
catch (HibernateException e) {
            
// TODO: handle exception
            e.printStackTrace();            
        }
    }
    
    
public void delete(){
        Transaction tran 
= null;
        String hql 
= " delete TUser";
        
try {
            tran 
= session.beginTransaction();
            Query query 
= session.createQuery(hql);
            
int ret = query.executeUpdate();
            System.out.println(
"Delete records => " + ret);
            tran.commit();
        } 
catch (HibernateException e) {
            
// TODO: handle exception
            e.printStackTrace();
            Assert.fail(e.getMessage());
            
if(tran != null) {
                
try {
                    tran.rollback();
                } 
catch(HibernateException e2) {
                    e2.printStackTrace();
                }
            }
        }
    }
    
    
public void testInsert(){
        Transaction tran 
= null;
        
try {
            System.out.println(
"session is " + session);
            tran 
= session.beginTransaction();
            
            
//user1
            TUser user = new TUser();
            user.setAge(
25);
            Name name 
= new Name();
            name.setFirstname(
"yu");
            name.setLastname(
"yy");
            user.setName(name);
            Contact contact 
= new Contact();
            contact.setAddress(
"dalian");
            contact.setTel(
"42689334");
            contact.setZipcodes(
"116023");
            user.setContact(contact);
            
            session.save(user);
            
            
//user2
            TUser user2 = new TUser();
            user2.setAge(
26);
            Name name2 
= new Name();
            name2.setFirstname(
"bai");
            name2.setLastname(
"yf");
            user2.setName(name2);
            Contact contact2 
= new Contact();
            contact2.setAddress(
"beijing");
            contact2.setTel(
"12345678");
            contact2.setZipcodes(
"100010");
            user2.setContact(contact2);            
            
            session.save(user2);
            
            session.flush();
            tran.commit();
            Assert.assertEquals(user.getId().intValue() 
> 0true);
        } 
catch (Exception e) {
            
// TODO: handle exception
            e.printStackTrace();
            Assert.fail(e.getMessage());
            
if(tran != null) {
                
try {
                    tran.rollback();
                } 
catch(HibernateException e2) {
                    e2.printStackTrace();
                }
            }
        }
    }
    
    
public void testSelect(){
        String hql 
= " from TUser where age=25 ";
        
try {
            List userList 
= session.createQuery(hql).list();
            TUser user 
= (TUser)userList.get(0);
            Contact contact 
= user.getContact();
            Assert.assertEquals(contact.getAddress(), 
"dalian");
            Assert.assertEquals(user.getName().getFirstname(), 
"yu");
        } 
catch (HibernateException e) {
            
// TODO: handle exception
            e.printStackTrace();
            Assert.fail(e.getMessage());
        }
    }
}


topquan 2006-08-05 00:49 鍙戣〃璇勮
]]>
浣跨敤Hibernate Tool鎵цHql璇彞http://www.tkk7.com/topquan/articles/61884.htmltopquantopquanFri, 04 Aug 2006 16:47:00 GMThttp://www.tkk7.com/topquan/articles/61884.htmlhttp://www.tkk7.com/topquan/comments/61884.htmlhttp://www.tkk7.com/topquan/articles/61884.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61884.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61884.html 1.棣栧厛錛屾墦寮Hibernate Configurations瑙嗗浘銆?br>

2.鍦ㄨ鍥句腑鐨勯厤緗笂錛岀偣鍑誨彸閿紝緙栬緫閰嶇疆錛岄厤緗涓?br>


3.鍦ㄩ厤緗笂錛岀偣鍑誨彸閿紝閫夋嫨HQL Scratchpad錛屾墦寮HQL璇彞緙栬緫紿楀彛


4.鍙互閫氳繃Hibernate Dynamic Query Translator錛屾煡鐪嬫渶緇堟墽琛岀殑SQL璇彞銆?br>

5.鍙互閫氳繃Query Parameters鏉ヨ緗煡璇㈠弬鏁?br>

6.鍙互閫氳繃Hibernate Query Result鏉ユ煡鐪嬫煡璇㈢粨鏋?br>

7.緇撳悎property瑙嗗浘錛岀湅寰楁洿娓呮


topquan 2006-08-05 00:47 鍙戣〃璇勮
]]>
Hibernate涓瀵瑰鏁版嵁鍏寵仈 http://www.tkk7.com/topquan/articles/61882.htmltopquantopquanFri, 04 Aug 2006 16:44:00 GMThttp://www.tkk7.com/topquan/articles/61882.htmlhttp://www.tkk7.com/topquan/comments/61882.htmlhttp://www.tkk7.com/topquan/articles/61882.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61882.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61882.html闃呰鍏ㄦ枃

topquan 2006-08-05 00:44 鍙戣〃璇勮
]]>
Hibernate涓瀵逛竴鏁版嵁鍏寵仈(浜? http://www.tkk7.com/topquan/articles/61881.htmltopquantopquanFri, 04 Aug 2006 16:42:00 GMThttp://www.tkk7.com/topquan/articles/61881.htmlhttp://www.tkk7.com/topquan/comments/61881.htmlhttp://www.tkk7.com/topquan/articles/61881.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61881.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61881.html闃呰鍏ㄦ枃

topquan 2006-08-05 00:42 鍙戣〃璇勮
]]>
Hibernate涓瀵逛竴鏁版嵁鍏寵仈(涓) http://www.tkk7.com/topquan/articles/61880.htmltopquantopquanFri, 04 Aug 2006 16:41:00 GMThttp://www.tkk7.com/topquan/articles/61880.htmlhttp://www.tkk7.com/topquan/comments/61880.htmlhttp://www.tkk7.com/topquan/articles/61880.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/61880.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61880.html瀵逛簬ORM鑰岃█錛屼竴涓噸瑕佺殑鐗規у氨鏄瀹炰綋涔嬮棿鍏寵仈鍏崇郴鐨勭鐞嗐傛暟鎹叧鑱旀槸ORM涓涓噸瑕佺殑鐗瑰緛錛屼絾寰寰涔熸槸瀵艱嚧鎬ц兘浣庝笅鐨勫師鍥狅紝鍦ㄥ紑鍙戜腑瑕佺壒鍒敞鎰忚繖涓鐐廣?br>
涓瀵逛竴鍏寵仈鏈変袱縐嶇被鍨嬶細涓婚敭鍏寵仈鍜屽敮涓澶栭敭鍏寵仈

涓.涓婚敭鍏寵仈錛?br>涓瀵逛竴涓婚敭鍏寵仈褰㈠紡錛屽嵆涓ゅ紶鍏寵仈琛ㄩ氳繃涓婚敭褰㈡垚涓瀵逛竴鏄犲皠鍏崇郴銆?br>渚嬪錛屼竴涓腑鍥藉叕姘戝彧鑳芥湁涓浠芥姢鐓с?br>
1.鏁版嵁妯″瀷濡備笅



2.琛ㄥ畾涔塻ql
DROP   TABLE  T_User;
DROP   TABLE  T_Passport;

CREATE   TABLE  T_Passport (
       id 
INT   NOT   NULL
     , serial 
VARCHAR ( 30 )
     , expiry 
INT
     , 
PRIMARY   KEY  (id)
);

CREATE   TABLE  T_User (
       id 
INT   NOT   NULL  AUTO_INCREMENT
     , name 
VARCHAR ( 50 )
     , age 
INT
     , 
PRIMARY   KEY  (id)
     , 
INDEX  (id)
     , 
CONSTRAINT  FK_T_User_1  FOREIGN   KEY  (id)
                  
REFERENCES  T_Passport (id)
);



3.POJO綾?br>TUser.java

package  cn.blogjava.start;

public   class  TUser   implements  java.io.Serializable {
    
//  Fields    
      private  Integer id;
     
private  Integer age;
     
private  String name;
     
private  TPassport passport;


    
//  Constructors

    
public  Integer getAge() {
        
return  age;
    }

    
public   void  setAge(Integer age) {
        
this .age  =  age;
    }

    
public  TPassport getPassport() {
        
return  passport;
    }

    
public   void  setPassport(TPassport passport) {
        
this .passport  =  passport;
    }

    
/**  default constructor  */
    
public  TUser() {
    }
    
    
/**  constructor with id  */
    
public  TUser(Integer id) {
        
this .id  =  id;
    }
    
//  Property accessors

    
public  Integer getId() {
        
return   this .id;
    }
    
    
public   void  setId(Integer id) {
        
this .id  =  id;
    }

    
public  String getName() {
        
return   this .name;
    }
    
    
public   void  setName(String name) {
        
this .name  =  name;
    }

}


TPassport.java

package  cn.blogjava.start;

import  java.io.Serializable;

public   class  TPassport  implements  Serializable {
    
private  Integer id;
    
private  String serial;
    
private  Integer expiry;
    
private  TUser user;
    
    
public  Integer getExpiry() {
        
return  expiry;
    }
    
public   void  setExpiry(Integer expiry) {
        
this .expiry  =  expiry;
    }
    
public  Integer getId() {
        
return  id;
    }
    
public   void  setId(Integer id) {
        
this .id  =  id;
    }
    
public  String getSerial() {
        
return  serial;
    }
    
public   void  setSerial(String serial) {
        
this .serial  =  serial;
    }
    
public  TUser getUser() {
        
return  user;
    }
    
public   void  setUser(TUser user) {
        
this .user  =  user;
    }
    
}


3.閰嶇疆鏂囦歡
TUser.hbm.xml

<? xml version="1.0" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
< hibernate-mapping >
    
< class  name ="cn.blogjava.start.TUser"  table ="T_User"  catalog ="sample" >
        
< id  name ="id"  type ="integer" >
            
< column  name ="id"   />
            
< generator  class ="native"   />
        
</ id >
        
< property  name ="name"  type ="string" >
            
< column  name ="name"  length ="100"  not-null ="true"   />
        
</ property >
        
< property  name ="age"  type ="java.lang.Integer"  column ="age"   />
        
< one-to-one  name ="passport"  
                    class
="cn.blogjava.start.TPassport"
 
                    cascade
="all"
 
                    outer-join
="true"
 
         
/>

    
</ class >
</ hibernate-mapping >


TPassport.hbm.xml

<? xml version="1.0" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
< hibernate-mapping >
    
< class  name ="cn.blogjava.start.TPassport"  table ="T_Passport"  catalog ="sample" >
        
< id  name ="id"  type ="integer"  column ="id" >
            
< generator  class ="foreign" >
                
< param  name ="property" > user </ param >
            
</ generator >            
        
</ id >

        
< property  name ="serial"  type ="string"  column ="serial"   />
        
< property  name ="expiry"  type ="java.lang.Integer"  column ="expiry"   />
        
        
< one-to-one  name ="user"  
                    class
="cn.blogjava.start.TUser"
 
                    constrained
="true"

         
/>
    
</ class >
</ hibernate-mapping >


4.嫻嬭瘯浠g爜

package  cn.blogjava.start;

import  java.util.List;

import  junit.framework.Assert;
import  junit.framework.TestCase;

import  org.hibernate.HibernateException;
import  org.hibernate.Session;
import  org.hibernate.SessionFactory;
import  org.hibernate.Transaction;
import  org.hibernate.cfg.Configuration;


public   class  HibernateTest  extends  TestCase {
    
    Session session 
=   null ;
     protected   void  setUp() {
        
try  {

            Configuration config  =   new  Configuration().configure();
            SessionFactory sessionFactory 
=  config.buildSessionFactory();
            session 
=  sessionFactory.openSession();
            
        } 
catch  (HibernateException e) {
            e.printStackTrace();
        }        
    }

     protected   void  tearDown() {
        
try  {
            session.close();        
        } 
catch  (HibernateException e) {
           e.printStackTrace();
        }        
    }    
    
     public   void  testInsert() {
        Transaction tran 
=   null ;
        
try  {
        
            TUser user 
=   new  TUser();
            user.setName(
" byf " );
            user.setAge(
new  Integer( 26 ));
            
            TPassport passport 
=   new  TPassport();
            passport.setSerial(
" PCN123456 " );
            passport.setExpiry(
new  Integer( 20081010 ));
            
            
// 璁劇疆鐩鎬簰鍏寵仈
            user.setPassport(passport);
            passport.setUser(user);

            tran 
=  session.beginTransaction();
            session.save(user);
            session.flush();
            tran.commit();
            Assert.assertEquals(user.getId().intValue()
> 0  , true );
        } 
catch  (HibernateException e) {
            e.printStackTrace();
            Assert.fail(e.getMessage());
            
if (tran  !=   null ) {
                
try  {
                    tran.rollback();
                } 
catch  (Exception e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
    
    
/**
     * 瀵硅薄璇誨彇嫻嬭瘯(Select鏂規硶)
     
*/             
    
public   void  testSelect(){
        String hql 
=   "  from TUser where name='byf' " ;
        
try  {
            List userList 
=  session.createQuery(hql).list();
            TUser user 
=  (TUser)userList.get( 0 );
            System.out.println(
" user name is  "   +  user.getName());
            System.out.println(
" passport serial NO. is  "   +  user.getPassport().getSerial());
            Assert.assertEquals(user.getName(), 
" byf " );
        } 
catch  (Exception e) {
            e.printStackTrace();
            Assert.fail(e.getMessage());
        }
    }
}


topquan 2006-08-05 00:41 鍙戣〃璇勮
]]>
HQL 璇█鍩烘湰鐢ㄦ硶http://www.tkk7.com/topquan/articles/61878.htmltopquantopquanFri, 04 Aug 2006 16:32:00 GMThttp://www.tkk7.com/topquan/articles/61878.htmlhttp://www.tkk7.com/topquan/comments/61878.htmlhttp://www.tkk7.com/topquan/articles/61878.html#Feedback1http://www.tkk7.com/topquan/comments/commentRss/61878.htmlhttp://www.tkk7.com/topquan/services/trackbacks/61878.htmlHQL 渚嬪瀵逛簬TUser綾?br>
1.瀹炰綋鏌ヨ
String hql = " from TUser";

鎵ц榪欐潯璇彞浼氳繑鍥濼User浠ュ強TUser瀛愮被鐨勭邯褰曘?br>
hql = "from java.lang.Object"
浼氳繑鍥炴暟鎹簱涓墍鏈夊簱琛ㄧ殑綰綍銆?br>
where 璇彞
hql = "from TUser as user where user.name='yyy'";

鍏朵腑錛宎s鍙互鐪佺暐涔熶竴鏍?br>hql = "from TUser user where user.name='yyy'";

where瀛愬彞涓紝鎴戜滑鍙互閫氳繃姣旇緝榪愮畻絎﹁瀹氭潯浠訛紝濡傦細
=, <>, >, <, >=, <=, between, not between, in, not in, is, like絳夈?br>
2.灞炴ф煡璇?br>List list = session.createQuery("select user.name, user.age from TUser as user").list();

榪樺彲浠ュ湪HQL涓姩鎬佹瀯閫犲璞″疄渚嬬殑鏂規硶錛屽皢鏁版嵁灝佽銆?br>List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();
Iterator it = list.iterator();
while(it.hasNext() ) {
     TUser user = (TUser)it.next();
     System.out.println(user.getName());
}
浣嗘槸瑕佹敞鎰忚繖閲岀殑TUser瀵硅薄鍙槸瀵筺ame鍜宎ge灞炴х殑灝佽錛屽叾浠栫姸鎬佸潎鏈祴鍊鹼紝鎵浠ヤ笉鑳界敤瀹冩潵榪涜鏇存柊鎿嶄綔銆?br>
涔熷彲浠ュ湪HQL鐨凷elect瀛愬彞涓嬌鐢ㄧ粺璁″嚱鏁?br>"select count(*) ,min(user.age) from TUser as user"

涔熷彲浠ヤ嬌鐢╠istinct鍏抽敭瀛楁潵鍒犻櫎閲嶅綰綍銆?br>select distinct user.name from TUser as user;

3.瀹炰綋鐨勬洿鏂頒笌鍒犻櫎
hibernate 2涓渶瑕佸厛鏌ヨ鍑哄疄浣擄紝璁劇疆灞炴у悗鍐嶄繚瀛樸?br>
hibernate 3涓紝鎻愪緵浜嗘洿鐏墊椿鐨勬柟寮?bulk delete/update)
鏇存柊錛?br>    Query query = session.createQuery("update TUser set age=18 where id=1");
    query.executeUpdate();
鍒犻櫎錛?br>
    session.createQuery("delete TUser where age>=18");
    query.executeUpdate();

4.鍒嗙粍涓庢帓搴?br>Order by瀛愬彞錛?br>    from TUser user order by user.name, user.age desc
Group by瀛愬彞鍜孒aving瀛愬彞
    "select count(user), user.age from TUser user group by user.age having count(user)>10"

5.鍙傛暟閭﹀畾
閫氳繃欏哄簭鍗犱綅絎?鏉ュ~鍏呭弬鏁幫細
 1)hibernate 2 涓氳繃session.find鏂規硶鏉ュ~鍏?br>       session.find("from TUser user where user.name=?", "Erica", Hibernate.STRING);
  澶氫釜鍙傛暟鐨勬儏鍐碉細
       Object[] args = new Object[] {"Erica", new Integer(20)};
       Type[] types = new Type{Hibernate.STRING, Hibernate.INTEGER};
       session.find("from TUser user where user.name=? and user.age=?", args, types);

2)閫氳繃Query鎺ュ彛榪涜鍙傛暟濉厖錛?br>        Query query = session.createQuery("from TUser user where user.name=? and user.age>?");
        query.setString(0,"Erica");
        query.setInteger(1, 20);

閫氳繃寮曠敤鍗犱綅絎︽潵濉厖鍙傛暟錛?br>        String hql = "from TUser where name=:name";
        Query query = session.createQuery(hql);
        query.setParameter("name","Erica");
 
鐢氳嚦鍙互灝嗘煡璇㈡潯浠跺皝瑁呬負涓涓狫avaBean
class UserQuery {
    private String name;
    private Integer age;
    //getter and setter
}
 String hql = "from TUser where name=:name and age=:age";
Query query = session.createQuery(hql);
UserQuery uq = new UserQuery();
uq.setName("Erica");
uq.setAge(new Integer(20));

query.setProperties(uq); //浼氳皟鐢ㄩ噷闈㈢殑getter?
query.iterate();

6.鑱斿悎鏌ヨ
涔熷彲浠ヤ嬌鐢?inner join,left outer join, right out join, full join
鎺掑垪緇勫悎錛歠orm TUser, TAddress


topquan 2006-08-05 00:32 鍙戣〃璇勮
]]>
鍒╃敤Hibernate寮鍙態log瀹炰緥鍒嗘瀽http://www.tkk7.com/topquan/articles/45021.htmltopquantopquanMon, 08 May 2006 07:39:00 GMThttp://www.tkk7.com/topquan/articles/45021.htmlhttp://www.tkk7.com/topquan/comments/45021.htmlhttp://www.tkk7.com/topquan/articles/45021.html#Feedback0http://www.tkk7.com/topquan/comments/commentRss/45021.htmlhttp://www.tkk7.com/topquan/services/trackbacks/45021.html闃呰鍏ㄦ枃

topquan 2006-05-08 15:39 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 最新亚洲卡一卡二卡三新区| 亚洲一区二区三区电影| 亚洲一本一道一区二区三区| 国产高清免费视频| 亚洲福利一区二区| 91精品免费在线观看| 中文字幕亚洲综合久久2| 69免费视频大片| 亚洲视频免费一区| 无码国产精品一区二区免费式直播| 国产精品视频全国免费观看| 亚洲国产小视频精品久久久三级 | 亚洲视频在线一区| 免费国产在线视频| 在线免费观看亚洲| 成年女人喷潮毛片免费播放| 亚洲人成人无码网www电影首页| 一级A毛片免费观看久久精品| 18成禁人视频免费网站| 亚洲精品美女在线观看播放| 免费观看美女用震蛋喷水的视频| 亚洲人色大成年网站在线观看| 拍拍拍又黄又爽无挡视频免费| 久久亚洲色WWW成人欧美| 亚洲成av人片天堂网老年人 | 久久综合图区亚洲综合图区| 在线看亚洲十八禁网站| 亚洲中文字幕丝袜制服一区| 国产免费伦精品一区二区三区| 国产AV无码专区亚洲精品| 日本免费一区二区在线观看| 亚洲国产精品成人AV在线| 国产精品亚洲综合一区| 久久精品私人影院免费看| 亚洲一卡2卡3卡4卡国产网站| 成年女人永久免费观看片| aa级毛片毛片免费观看久| 亚洲自偷自偷精品| 免费a级毛片永久免费| 免费的全黄一级录像带| 天堂亚洲国产中文在线|