双方向主キー・アソシエーション・マッピングに基づいてJavaの休止

この双方向の主キー関連マッピング

1.調査及びIDカードはまだ1つの関係で、関連付けられたプライマリキーの場合は、テーブルの構造は次のようになります。

2.クラスの構造

Person.java

パブリック クラスの人は、実装Serializableを{
     プライベート文字列ID;
    プライベート文字列名;
    プライベートIdCard idCardパブリック人(){ 
    } 
    公共人(文字列名){
         スーパー()。
        この .nameの= 名前; 
    } 

    パブリック文字列のgetId(){
         戻りID。
    } 
    公共 ボイドSETID(文字列ID){
         この .ID = ID。
    } 
    パブリック文字列のgetName(){
        返す名前を。
    } 
    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 
    公共IdCard getIdCard(){
         戻りidCardと、
    } 
    公共 ボイドsetIdCard(IdCard idCard){
         この .idCard = idCard。
    } 
}

IdCard.java

パブリック クラス IdCardは 実装Serializableを{
     プライベート文字列ID;
    プライベート文字列のアドレス。
    民間人の人物パブリックIdCard(){ 
    } 
    
    公共IdCard(文字列ID、文字列アドレス){
         スーパー()。
        この .ID = ID。
        この .address = アドレス。
    } 

    パブリック文字列のgetId(){
         戻りID。
    } 
    公共 ボイドSETID(文字列ID){
         この .ID = ID。 
    }
    パブリック文字列のgetAddress(){
         リターンアドレス。
    } 
    公共 ボイドsetAddress(列アドレス){
         この .address = アドレス。
    } 
    公共getPerson(){
         戻り者。
    } 
    公共 ボイドsetPerson(人の人){
         この .person = 人; 
    } 
}

3.マッピングファイル

Person.hbm.xml

<-Hibernateマッピングパッケージ =「cn.sxt.pojo」> 
    < クラス名=「」表=「t_person」> 
        <名前ID =「ID」> 
            <! - フロントマスターキーテーブルは、外部キーの参照であります機能 > - 
            <ジェネレータクラス = "外国"> 
                 <PARAM NAME = "プロパティ"> idCard </ param>の
            </ジェネレータ> 
        </ ID> 
        <プロパティ名= "名前" /> 
        <! - に基づいて、単一のマスターキー協会は、   制約、外部キー制約を表す- > 
        <ワン・ツー・ワン/> =「trueに」制約名=「idCard」
    </ クラス > 
</休止状態マッピング>

IdCard.hbm.xml

<休止状態マッピングパッケージ = "cn.sxt.pojo"> 
    < クラス名= " IdCard "テーブル=" t_idCard "> 
        <ID名=" ID "> 
            <ジェネレータクラス ="割り当てられた"> </ジェネレータ> 
        </ ID > 
        <プロパティ名=「アドレス」/> 
        < 一対一名=「人」> </一対一> 
    </ クラス > 
</休止状態マッピング>

4.テスト

パブリック クラスHibernateTest {
     / ** 
     * データベースの作成ツール方法
     * * / 
    @Test 
    公共 無効testCreateDB(){ 
        設定CFG = 新新設定()の設定();. 
        SchemaExportのSE = 新しい新しいSchemaExportの(CFG);
         // 最初のSQLスクリプト印刷パラメータかどうか
         // データベースエクスポートスクリプト実行の2番目のパラメータであれば 
        (se.create trueに真の); 
    } 
    / ** 
     * 初期化テーブルデータ
      * / 
    @Test 
    公共 ボイドtestInit(){ 
        セッションセッション = NULL ; 
        トランザクションTX = nullを試す{ 
            セッション = HibernateUtil.getSession()。
            TX = session.beginTransaction()。
            IdCardカード1 = 新しい IdCard( "110086"、 "湖北武当" ); 
            IdCardカード2 =  IdCard( "110087"、 "光明顶" ); 
            人物P1 = 新しい人( "张三疯" ); 
            p1.setIdCard(カード1)。
            人P2 =新しい人( "殷素素" ); 
            p2.setIdCard(カード2)。
            session.save(カード1)。
            session.save(カード2)。
            session.save(P1)。
            session.save(P2)。
            tx.commit(); 
            
        } キャッチ(例外e){
             場合(TX!= NULL 
                tx.rollback(); 
        } 最後に{ 
            HibernateUtil.close()。
        } 
    } 
    / ** 
     * / 
    @Test 
    公共 ボイドtestGetData(){ 
        セッションセッション =HibernateUtil.getSession();
        人物P1 =(人物)session.get(人。クラス、 "110086" ) 
        System.out.println(p1.getName() + "----" + p1.getIdCard()のgetId()+ "----" +。p1.getIdCard()のgetAddress()。 )。
        System.out.println( "==================================" );
        IdCardカード =(IdCard)session.get(IdCard クラス、 "110086" ) 
        System.out.println(card.getId() + "----" + card.getAddress()+ "----" + card.getPerson()のgetName()。 )。
        HibernateUtil.close(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/Vincent-yuan/p/11204758.html