例えば、1は、権利管理で、ロールとパーミッションの関係は、多くのテーブル構造です。
2.クラスの構造
Role.java
パブリック クラス の役割は、 実装Serializableを{ プライベート int型のIDを、 プライベート文字列名; プライベート設定<許可>パーミッション= 新しい HashSetの<許可> () ; パブリックロール(){ } 公共の役割(文字列名){ スーパー()。 この .nameの= 名前; } 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID =ID; } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } パブリックセット<許可> getPermissions(){ 戻りパーミッション。 } 公共 ボイド setPermissions(セット<権限> 権限){ この .permissions = パーミッション。 } }
Permisssion.java
パブリック クラス 許可が 実装Serializableを{ プライベート int型のIDを、 プライベート文字列名; プライベート設定<役割> 役割。 パブリック許可(){ // TODO自動生成コンストラクタスタブ } パブリック許可(文字列名){ スーパー()。 この .nameの= 名前; } 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } 公共のセットの<role> getRoles(){ 返す役割を、 } 公共 ボイド setRoles(セット<役割> 役割){ この .rolesの=の役割。 } }
3.マッピングファイル情報
Role.hbm.xml
<休止状態マッピングパッケージ = "cn.sxt.pojo"> < クラス名= " ロール "テーブル=" t_role "> <ID名=" ID "> <ジェネレータクラス ="天然"> </ジェネレータ> </ ID > <プロパティ名= "名前" /> < 設定名= "権限"表= " t_role_permission "> <! -当前类在连接表中的外键- > <キー列=" RID"> </キー> < 多対多列=「PID」クラス = "許可"> </多対多の> </設定> </ クラス > </休止状態マッピング>
Permission.hbm.xml
<休止状態マッピングパッケージ = "cn.sxt.pojo"> < クラス名= " 許可 "テーブル=" t_permission "> <ID名=" ID "> <ジェネレータクラス ="天然"> </ジェネレータ> </ ID > <プロパティ名= "名前" /> < 設定名= "役割" 表= "t_role_permission" 逆= "true"を > <! -当前类在连接表中的外键- > <キー列= "PID "> </ key>の <多対多列=" RID」クラス = "役割"> </多対多の> </設定> </ クラス > </休止状態マッピング>
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!= NULL ) 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())。 } のSystem.out.println( "==========================" )。 許可P =(許可)session.get(パーミッション。クラス、3 ); System.out.println(p.getId() + "----" + p.getName()); 用(ロールR:p.getRoles()){ System.out.printlnは(r.getId() + "---" + r.getName())。 } HibernateUtil.close()。 } }