この説明に関連する一方向外部キーマッピングに基づいて、
1.以下の情報は、人間の身分証明書との1対1の関係で調べます。テーブルデザイン
注:テーブル構造に基づいており、外部キーの多対一の関連テーブル構造が一致している、しかし、外部キーがユニークです。
2.クラスの構造
Person.java
パブリック クラスの人は、実装Serializableを{ プライベート int型のIDを、 プライベート文字列名; プライベートIdCard idCard。 パブリック人(){ } 公共人(文字列名){ スーパー()。 この .nameの= 名前; } 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } 公共IdCard getIdCard(){ 戻りidCardと、 } 公共 ボイドsetIdCard(IdCard idCard){ この .idCard = idCard。 } }
IdCard.java
パブリック クラス IdCardは 実装Serializableを{ プライベート文字列ID; プライベート文字列のアドレス。 パブリックIdCard(){ // TODO自動生成コンストラクタスタブ } パブリックIdCard(文字列ID、文字列アドレス){ スーパー()。 この .ID = ID。 この .address = アドレス。 } パブリック文字列のgetId(){ 戻りID。 } 公共 ボイドSETID(文字列ID){ この .ID = ID。 } パブリック文字列のgetAddress(){ リターンアドレス。 } 公共 ボイドsetAddress(列アドレス){ この .address = アドレス。 } }
3.マッピングファイル情報:
IdCard.hbm.xml
<休止状態マッピングパッケージ = "cn.sxt.pojo"> < クラス名= " IdCard "テーブル=" t_idCard "> <ID名=" ID "> <ジェネレータクラス ="割り当てられた"> </ジェネレータ> </ ID > <プロパティ名= "アドレス" /> </ クラス > </休止状態マッピング>
Person.hbm.xml
<-Hibernateマッピングパッケージ = "cn.sxt.pojo"> < クラス名= " 人 "表= "t_person"> <名前ID = "ID"> <ジェネレータクラス = "ネイティブ"> </ジェネレータ> </ ID > <プロパティ名=「名前」/> <! - 1オンとマッピングファイルが外部キーが一意であることを保証するために、同じであるので、多対外部キーテーブルの構造は、同じである - > < MANY 1 -に名前= "idCard"欄= "idCardId" UNIQUE = "trueに" > </多対一> </ クラス > </休止状態マッピング>
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.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(人。クラス、1 )。 System.out.println(p1.getName() + "----" + p1.getIdCard()のgetId()+ "----" +。p1.getIdCard() .getAddress())。 HibernateUtil.close(); } }