この方法では、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(); } }