I.ユーザーおよびロールは、ユーザーが多くの例を実装します
User.javaの役割への参照を達成するために
パッケージcom.lxit.entity。 輸入はjava.util.HashSet。 輸入java.util.Set; パブリッククラスユーザー{ パブリックユーザ(){ } パブリックユーザ(文字列のユーザーID、文字列ユーザ名、文字列userPwd){ this.userid =ユーザーID。 this.userName = userNameに。 this.userPwd = userPwd。 } プライベート文字列のユーザーID。 プライベート文字列のuserName; プライベート文字列userPwd。 プライベート設定<役割>役割=新しいHashSetの<役割>(); パブリック文字列getUserid(){ 戻りユーザID、 } 公共ボイドsetUserid(文字列のユーザーID){ this.userid =ユーザーID。 } パブリック文字列getUserName(){ リターンのuserName。 } 公共ボイドsetUserName(文字列のuserName){ this.userName = userNameに。 } パブリック文字列getUserPwd(){ リターンuserPwd。 } 公共ボイドsetUserPwd(文字列userPwd){ this.userPwd = userPwd。 } 公共のセットの<role> getRoles(){ 役割を返します。 } 公共ボイドsetRoles(セット<役割>役割){ this.roles =ロール。 } }
User.hbm.xml設定ファイル、マップ、多くの多くの収集、およびカスケード効果を維持するために、ユーザーによって、カスケード効果を開きます
<?xml version = "1.0"エンコード= "UTF-8"?> <DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> の<hibernateマッピング> <クラス名=" com.lxit.entity.User」テーブル= "ユーザー"> <ID名= "USERID"タイプ= "java.lang.Stringで"> <発電機クラス= "割り当て" /> </ ID> <プロパティ生成= "決して"怠惰= "false"の名前= "userNameに" タイプ= "java.lang.Stringで"> <列の長さ= "20"名前=」userNameに」非NULL = "真" /> </ property>の <プロパティ生成= "決して"怠惰= "false"の名前= "userPwd" タイプ= "java.lang.Stringで"> <コラム長さ= "20"名= "userPwd"非NULL = "真" /> </ property>の <セット名= "役割"表= "USER_ROLE"カスケード= "すべて"> <キー列は= "USERID" /> <多対多列= "roleid"クラス= "com.lxit.entity.Role" /> </設定> </クラス> </休止マッピング>
Role.javaの文字クラスは、また、ユーザーのコレクションをマッピングしています
パッケージcom.lxit.entity。 輸入はjava.util.HashSet。 輸入java.util.Set; パブリッククラスの役割{ publicロール(){ } publicロール(文字列のroleName、列roleDesc){ this.roleName =のroleName。 this.roleDesc = roleDesc。 } プライベートint型roleId。 プライベート文字列のroleName。 プライベート文字列roleDesc。 プライベート設定<ユーザー>ユーザー=新しいHashSetの<ユーザー>(); 公共int型getRoleId(){ roleIdを返します。 } 公共ボイドsetRoleId(INT roleId){ this.roleId = roleId。 } パブリック文字列getRoleName(){ のroleNameを返します。 } 公共ボイドsetRoleName(文字列のroleName){ this.roleName =のroleName。 } パブリック文字列getRoleDesc(){ roleDescを返します。 } 公共ボイドsetRoleDesc(文字列roleDesc){ this.roleDesc = roleDesc。 } パブリックセット<ユーザー> getUsers(){ ユーザーを戻します。 } 公共ボイドsetUsers(セット<ユーザ>ユーザ){ this.usersを=ユーザー。 } }
User.hbm.xmlマッピングファイル、マッピングユーザー対多の関係、及び逆=「true」に設定。
<?xml version = "1.0"エンコード= "UTF-8"?> <DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> の<hibernateマッピング> <クラス名=" com.lxit.entity.Role」テーブル= "ロール"> <ID名= "roleId"タイプ= "java.lang.Integerの"> <ジェネレータクラス= "天然"> </ジェネレータ> </ ID> <プロパティ名= "のroleName"タイプ= "java.lang.Stringで"> <カラム名= "のroleName"長さ= "20"、nullでない=「真「> </コラム> </ property>の <セット名= "ユーザー"テーブル= "USER_ROLE"逆= "真の"> <キー列= "roleid"> </キー> <多対多列=「ユーザーID」クラス=「com.lxit.entity.User」/> </設定> </クラス> </休止状態マッピング>
マッピングマッピングファイルを追加します。
<マッピングリソース= "COM / lxit /エンティティ/ Role.hbm.xml" /> <マッピングリソース= "COM / lxit /エンティティ/ User.hbm.xml" />
最後のテストクラス
パブリック静的無効メイン(文字列[] args){ 役割SYS =新しい役割( "管理者"、 "系統管理员")。 役割の先生=新しい役割( "教師"、 "教师"); ユーザーUSER1 =新しいユーザー( "管理者"、 "管理员"、 "123123"); ユーザuser2 =新しいユーザー( "zhangsan"、 "张三疯"、 "123123"); user1.getRoles()(SYS)を追加します。 user1.getRoles()(教師)を追加します。 user2.getRoles()(教師)を追加します。 セッションsession = HibernateUtil.getSession(); トランザクションTX = session.beginTransaction(); //session.save(sys); //session.save(teacher); session.save(USER1)。 session.save(USER2)。 tx.commit(); }
上記の、あなただけが特権の効果を達成するためにサード多くのテーブルを使用する必要があり、自動的に多くの権限に多くを生成するユーザーに役割を追加する必要があります。あなたは、3番目のテーブルにマップファイルを追加することはできません。
I.ユーザーおよびロールは、ユーザーが多くの例を実装します
User.javaの役割への参照を達成するために
パッケージcom.lxit.entity。 輸入はjava.util.HashSet。 輸入java.util.Set; パブリッククラスユーザー{ パブリックユーザ(){ } パブリックユーザ(文字列のユーザーID、文字列ユーザ名、文字列userPwd){ this.userid =ユーザーID。 this.userName = userNameに。 this.userPwd = userPwd。 } プライベート文字列のユーザーID。 プライベート文字列のuserName; プライベート文字列userPwd。 プライベート設定<役割>役割=新しいHashSetの<役割>(); パブリック文字列getUserid(){ 戻りユーザID、 } 公共ボイドsetUserid(文字列のユーザーID){ this.userid =ユーザーID。 } パブリック文字列getUserName(){ リターンのuserName。 } 公共ボイドsetUserName(文字列のuserName){ this.userName = userNameに。 } パブリック文字列getUserPwd(){ リターンuserPwd。 } 公共ボイドsetUserPwd(文字列userPwd){ this.userPwd = userPwd。 } 公共のセットの<role> getRoles(){ 役割を返します。 } 公共ボイドsetRoles(セット<役割>役割){ this.roles =ロール。 } }
User.hbm.xml設定ファイル、マップ、多くの多くの収集、およびカスケード効果を維持するために、ユーザーによって、カスケード効果を開きます
<?xml version = "1.0"エンコード= "UTF-8"?> <DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> の<hibernateマッピング> <クラス名=" com.lxit.entity.User」テーブル= "ユーザー"> <ID名= "USERID"タイプ= "java.lang.Stringで"> <発電機クラス= "割り当て" /> </ ID> <プロパティ生成= "決して"怠惰= "false"の名前= "userNameに" タイプ= "java.lang.Stringで"> <列の長さ= "20"名前=」userNameに」非NULL = "真" /> </ property>の <プロパティ生成= "決して"怠惰= "false"の名前= "userPwd" タイプ= "java.lang.Stringで"> <コラム長さ= "20"名= "userPwd"非NULL = "真" /> </ property>の <セット名= "役割"表= "USER_ROLE"カスケード= "すべて"> <キー列は= "USERID" /> <多対多列= "roleid"クラス= "com.lxit.entity.Role" /> </設定> </クラス> </休止マッピング>
Role.javaの文字クラスは、また、ユーザーのコレクションをマッピングしています
パッケージcom.lxit.entity。 輸入はjava.util.HashSet。 輸入java.util.Set; パブリッククラスの役割{ publicロール(){ } publicロール(文字列のroleName、列roleDesc){ this.roleName =のroleName。 this.roleDesc = roleDesc。 } プライベートint型roleId。 プライベート文字列のroleName。 プライベート文字列roleDesc。 プライベート設定<ユーザー>ユーザー=新しいHashSetの<ユーザー>(); 公共int型getRoleId(){ roleIdを返します。 } 公共ボイドsetRoleId(INT roleId){ this.roleId = roleId。 } パブリック文字列getRoleName(){ のroleNameを返します。 } 公共ボイドsetRoleName(文字列のroleName){ this.roleName =のroleName。 } パブリック文字列getRoleDesc(){ roleDescを返します。 } 公共ボイドsetRoleDesc(文字列roleDesc){ this.roleDesc = roleDesc。 } パブリックセット<ユーザー> getUsers(){ ユーザーを戻します。 } 公共ボイドsetUsers(セット<ユーザ>ユーザ){ this.usersを=ユーザー。 } }
User.hbm.xmlマッピングファイル、マッピングユーザー対多の関係、及び逆=「true」に設定。
<?xml version = "1.0"エンコード= "UTF-8"?> <DOCTYPE休止状態マッピングをPUBLIC! " - //休止/休止状態のマッピングDTD 3.0 // EN" 「http://hibernate.sourceforge.net/hibernate -mapping-3.0.dtd "> の<hibernateマッピング> <クラス名=" com.lxit.entity.Role」テーブル= "ロール"> <ID名= "roleId"タイプ= "java.lang.Integerの"> <ジェネレータクラス= "天然"> </ジェネレータ> </ ID> <プロパティ名= "のroleName"タイプ= "java.lang.Stringで"> <カラム名= "のroleName"長さ= "20"、nullでない=「真「> </コラム> </ property>の <セット名= "ユーザー"テーブル= "USER_ROLE"逆= "真の"> </設定> <キー列= "roleid"> </キー> <多対多列=「ユーザーID」クラス=「com.lxit.entity.User」/> </クラス> </休止状態マッピング>
マッピングマッピングファイルを追加します。
<マッピングリソース= "COM / lxit /エンティティ/ Role.hbm.xml" /> <マッピングリソース= "COM / lxit /エンティティ/ User.hbm.xml" />
最後のテストクラス
パブリック静的無効メイン(文字列[] args){ 役割SYS =新しい役割( "管理者"、 "系統管理员")。 役割の先生=新しい役割( "教師"、 "教师"); ユーザーUSER1 =新しいユーザー( "管理者"、 "管理员"、 "123123"); ユーザuser2 =新しいユーザー( "zhangsan"、 "张三疯"、 "123123"); user1.getRoles()(SYS)を追加します。 user1.getRoles()(教師)を追加します。 user2.getRoles()(教師)を追加します。 セッションsession = HibernateUtil.getSession(); トランザクションTX = session.beginTransaction(); //session.save(sys); //session.save(teacher); session.save(USER1)。 session.save(USER2)。 tx.commit(); }
上記の、あなただけが特権の効果を達成するためにサード多くのテーブルを使用する必要があり、自動的に多くの権限に多くを生成するユーザーに役割を追加する必要があります。あなたは、3番目のテーブルにマップファイルを追加することはできません。