Javaは一方向のマッピングの主キーに基づいて、1つの関連付けを休止します

この方法では、1は主キーに基づいて関連マッピングを話します

関連する主キー、そしてテーブル構造があるべき場合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 = アドレス。
    } 
    
}

3.マッピングファイル

Person.hbm.xml

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

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()。 )。
        HibernateUtil.close(); 
    } 
}

 

おすすめ

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