この一方向-多くの関連マッピング
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()。 } }