ジャワの一方向の休止、多くの関連マッピング

この一方向-多くの関連マッピング

1.どのように著作権管理、役割と権限その多の関係の間の関係は、テーブルの構造は次のようになります。

2.クラスの構造

Permission.java

パブリック クラス 許可が 実装Serializableを{
     プライベート int型のIDを、
    プライベート文字列名;
    パブリック許可(){
         // TODO自動生成コンストラクタスタブ
    } 
    
    パブリック許可(文字列名){
         スーパー()。
        この .nameの= 名前; 
    } 

    公共 INT のgetId(){
         戻りID。
    } 
    公共 ボイド SETID(int型のID){
         この .ID = ID。
    } 
    パブリック文字列のgetName(){
         戻り名。
    } 
    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 
    
}

Role.java

パブリック クラス の役割は、 実装Serializableを{
     プライベート int型のIDを、
    プライベート文字列名;
    プライベート設定<許可>パーミッション= 新しい HashSetの<許可>() ; // 这个地方特别容易忘记,,, 
    公的役割(){ 
    } 
    公共の役割(文字列名){
         スーパー()。
        この .nameの= 名前; 
    } 

    公共 INT のgetId(){
         戻りID。
    } 
    公共 ボイド SETID(int型のID){
        この .ID = ID。
    } 
    パブリック文字列のgetName(){
         戻り名。
    } 
    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 
    パブリックセット<許可> getPermissions(){
         戻りパーミッション。
    } 
    公共 ボイド setPermissions(セット<権限> 権限){
         この .permissions = パーミッション。
    } 
}

3.マッピングファイル

Permission.hbm.xml

<休止状態マッピングパッケージ = "cn.sxt.pojo"> 
    < クラス名= " 許可 "テーブル=" t_permission "> 
        <ID名=" ID "> 
            <ジェネレータクラス ="天然"> 
            </ジェネレータ> 
        </ ID > 
        <プロパティ名= "名前" /> 
    </ クラス > 
</休止状態マッピング>

Role.hbm.xml

<休止状態マッピングパッケージ = "cn.sxt.pojo"> 
    < クラス名= " ロール "テーブル=" t_role "> 
        <ID名=" ID "> 
            <ジェネレータクラス ="天然"> 
            </ジェネレータ> 
        </ ID > 
        <プロパティ名= "名前" /> <セット名= "権限"表= "t_role_permission"> 
            <! -当前类在连接表中的外键- > 
            <キー列= "RID"> </キー> 
            <多対多列=「PID」クラス =「許可」> </多対多の> 
        </設定> 
    </ クラス > 
</休止状態マッピング>
        

4.テスト

パブリック クラスHibernateTest {
     / ** 
     * データベースの作成ツール方法
     * * / 
    @Test 
    公共 無効testCreateDB(){ 
        設定CFG = 新新設定()の設定();. 
        SchemaExportのSE = 新しい新しいSchemaExportの(CFG);
         // 最初のSQLスクリプト印刷パラメータかどうか
         // データベースエクスポートスクリプト実行の2番目のパラメータであれば 
        (se.create trueに真の); 
    } 
    / ** 
     * 初期化テーブルデータ
      * / 
    @Test 
    公共 ボイドtestInit(){ 
        セッションセッション = nullの; 
        トランザクションTX = ヌル;
         試み{ 
            セッション = HibernateUtil.getSession(); 
            TX = session.beginTransaction(); 
            許可P1 = 新新許可( "ユーザーの追加" ); 
            パーミッションP2 = 新新許可( 「ユーザーを削除」); 
            パーミッションP3 = 新しい新しい許可(「クエリーユーザー" ); 
            パーミッションP4 = 新しい新しい許可(」ユーザーを変更します」); 
            
            ロールR1 = 新しい役割( "管理员" );
            r1.getPermissions()(P1)を追加します。 ;
            r1.getPermissions()(P2)を追加します。
            r1.getPermissions()(P3)を追加します。
            r1.getPermissions()(P4)を追加します。
            役割R2 = 新しい役割( "VIP" )。
            r2.getPermissions()(P3)を追加します。
            r2.getPermissions()(P4)を追加します。 ; 
            
            session.save(P1)。
            session.save(P2)。
            session.save(P3)。
            session.save(P4)。
            session.save(R1)。
            session.save(R2)。
            tx.commit(); 
            
        }キャッチ(例外e){
             場合(!TX = ヌル
                tx.rollback(); 
        } 最後に{ 
            HibernateUtil.close()。
        } 
    } 
    / ** 
     * / 
    @Test 
    公共 ボイドtestGetData(){ 
        セッションセッション = HibernateUtil.getSession()。
        役割役割 =(役割)session.get(役割。クラス、1 
        System.out.println(role.getId() + "---" +  role.getName());
        するSystem.out.println( "-------------" のために(許可P:role.getPermissions()){ 
            System.out.printlnは(p.getId() + "---" + p.getName())。
        } 
        
        HibernateUtil.close()。
    } 
}

 

おすすめ

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