この双方向の主キー関連マッピング
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(); } }