外部キーマッピングに基づいて関連する一方向のJavaの休止

この説明に関連する一方向外部キーマッピングに基づいて、

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(); 
    } 
}

 

おすすめ

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