zoukankan      html  css  js  c++  java
  • t3用户-角色-权限hibernate经典配置

    [java] view plain copy
     
     print?
    1. 用户-角色-权限hibernate经典配置。  
    [java] view plain copy
     
     print?
    1. 既然有人问起,我就写下说明吧。在文章中间的配置文件那里。权当回忆一下,也帮助更多人。这是以前学校时写的,没有注释。都是贴的代码笔记。看到的莫要见怪。欢迎学习交流。  
    [java] view plain copy
     
     print?
    1.    
    [java] view plain copy
     
     print?
    1. 首先是三个实体类:  
    [java] view plain copy
     
     print?
    1. 用户-》角色-》权限  
    [java] view plain copy
     
     print?
    1. package com.tudou.hibernates.RoleManage;  
    2.   
    3. import java.util.HashSet;  
    4. import java.util.Set;  
    5.   
    6. public class User {  
    7.     private int uid;  
    8.     private String userName;  
    9.     private String nickName;  
    10.     private String password;  
    11.     private String mark;  
    12.     private Set<RoleUser> roleUsers = new HashSet<RoleUser>();  
    13.   
    14.     public User() {  
    15.         super();  
    16.     }  
    17.   
    18.     public User(String userName, String nickName, String password, String mark,  
    19.             Set<RoleUser> roleUsers) {  
    20.         super();  
    21.         this.userName = userName;  
    22.         this.nickName = nickName;  
    23.         this.password = password;  
    24.         this.mark = mark;  
    25.         this.roleUsers = roleUsers;  
    26.     }  
    27.   
    28.     public int getUid() {  
    29.         return uid;  
    30.     }  
    31.   
    32.     public void setUid(int uid) {  
    33.         this.uid = uid;  
    34.     }  
    35.   
    36.     public String getUserName() {  
    37.         return userName;  
    38.     }  
    39.   
    40.     public void setUserName(String userName) {  
    41.         this.userName = userName;  
    42.     }  
    43.   
    44.     public String getNickName() {  
    45.         return nickName;  
    46.     }  
    47.   
    48.     public void setNickName(String nickName) {  
    49.         this.nickName = nickName;  
    50.     }  
    51.   
    52.     public String getPassword() {  
    53.         return password;  
    54.     }  
    55.   
    56.     public void setPassword(String password) {  
    57.         this.password = password;  
    58.     }  
    59.   
    60.     public String getMark() {  
    61.         return mark;  
    62.     }  
    63.   
    64.     public void setMark(String mark) {  
    65.         this.mark = mark;  
    66.     }  
    67.   
    68.     public Set<RoleUser> getRoleUsers() {  
    69.         return roleUsers;  
    70.     }  
    71.   
    72.     public void setRoleUsers(Set<RoleUser> roleUsers) {  
    73.         this.roleUsers = roleUsers;  
    74.     }  
    75.   
    76. }  
    [java] view plain copy
     
     print?
    1. package com.tudou.hibernates.RoleManage;  
    2.   
    3. import java.util.HashSet;  
    4. import java.util.Set;  
    5.   
    6. public class Role {  
    7.     private int rid;  
    8.     private String roleName;  
    9.     private String dsc;  
    10.     private Set<RoleUser> roleUsers = new HashSet<RoleUser>();  
    11.     private Set<FunctionsRole> functionRoles = new HashSet<FunctionsRole>();  
    12.   
    13.     public Role() {  
    14.         super();  
    15.     }  
    16.   
    17.     public Role(String roleName, String dsc, Set<RoleUser> roleUsers,  
    18.             Set<FunctionsRole> functionRoles) {  
    19.         super();  
    20.         this.roleName = roleName;  
    21.         this.dsc = dsc;  
    22.         this.roleUsers = roleUsers;  
    23.         this.functionRoles = functionRoles;  
    24.     }  
    25.   
    26.     public int getRid() {  
    27.         return rid;  
    28.     }  
    29.   
    30.     public void setRid(int rid) {  
    31.         this.rid = rid;  
    32.     }  
    33.   
    34.     public String getRoleName() {  
    35.         return roleName;  
    36.     }  
    37.   
    38.     public void setRoleName(String roleName) {  
    39.         this.roleName = roleName;  
    40.     }  
    41.   
    42.     public String getDsc() {  
    43.         return dsc;  
    44.     }  
    45.   
    46.     public void setDsc(String dsc) {  
    47.         this.dsc = dsc;  
    48.     }  
    49.   
    50.     public Set<RoleUser> getRoleUsers() {  
    51.         return roleUsers;  
    52.     }  
    53.   
    54.     public void setRoleUsers(Set<RoleUser> roleUsers) {  
    55.         this.roleUsers = roleUsers;  
    56.     }  
    57.   
    58.     public Set<FunctionsRole> getFunctionRoles() {  
    59.         return functionRoles;  
    60.     }  
    61.   
    62.     public void setFunctionRoles(Set<FunctionsRole> functionRoles) {  
    63.         this.functionRoles = functionRoles;  
    64.     }  
    65.   
    66. }  
    [java] view plain copy
     
     print?
    1. package com.tudou.hibernates.RoleManage;  
    2.   
    3. import java.util.HashSet;  
    4. import java.util.Set;  
    5.   
    6. public class Functions {  
    7.     private int fid;  
    8.     private String functionName;  
    9.     private String mark;  
    10.     private Set<FunctionsRole> functionRoles = new HashSet<FunctionsRole>();  
    11.   
    12.     public Functions(String functionName, String mark,  
    13.             Set<FunctionsRole> functionRoles) {  
    14.         super();  
    15.         this.functionName = functionName;  
    16.         this.mark = mark;  
    17.         this.functionRoles = functionRoles;  
    18.     }  
    19.   
    20.     public Functions() {  
    21.         super();  
    22.     }  
    23.   
    24.     public int getFid() {  
    25.         return fid;  
    26.     }  
    27.   
    28.     public void setFid(int fid) {  
    29.         this.fid = fid;  
    30.     }  
    31.   
    32.     public String getFunctionName() {  
    33.         return functionName;  
    34.     }  
    35.   
    36.     public void setFunctionName(String functionName) {  
    37.         this.functionName = functionName;  
    38.     }  
    39.   
    40.     public String getMark() {  
    41.         return mark;  
    42.     }  
    43.   
    44.     public void setMark(String mark) {  
    45.         this.mark = mark;  
    46.     }  
    47.   
    48.     public Set<FunctionsRole> getFunctionRoles() {  
    49.         return functionRoles;  
    50.     }  
    51.   
    52.     public void setFunctionRoles(Set<FunctionsRole> functionRoles) {  
    53.         this.functionRoles = functionRoles;  
    54.     }  
    55.   
    56. }  

    用户-角色-权限关系如下:

    一个用户user对应多个角色role,一个角色对应多个用户,关系为多对多many-to-many

    一个角色role对应多个权限functions,一个权限也对应多个角色。

    这个自不必说。

    主要是如何维护呢。

    如下所示:

    多对多必然产生中间表进行关联。

    user与role产生中间表userRole。则user与userRole的关系为one-to-many。理解为一个用户可以有多个权限对应。role与userRole的关系为one-to-many。理解为一个权限可以有多个用户对应。

    其次就是角色role与权限function,中间表为roleFunction,他们之前的关系如上。

    只不过role表在中间,即与user表是多对多的关系,又与function表是多对多的关系。所以role会产生2张中间表,一张userRole,一张roleFunction而已。

    role与这2张中间表都是one-to-many的关系,反之,它们与role却都是many-to-one的关系。

    user->userRole->role->roleFunction->function

    user->userRole一对多,role->userRole一对多,则user->role多对多

    role->roleFunction一对多,function->roleFunction一对多,则role->function多对多

    说白了就是把2个多对多,分解成了4个一对多【其实就是2对一对多】而已。

    这样写来。再看配置,则是一目了然了。

    [html] view plain copy
     
     print?
    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC  
    3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    5.   
    6. <hibernate-mapping package="com.tudou.hibernates.RoleManage">  
    7.     <class name="User" table="tb_user">  
    8.         <id name="uid" column="uid">  
    9.             <generator class="native" />  
    10.         </id>  
    11.         <property name="userName"></property>  
    12.         <property name="nickName"></property>  
    13.         <property name="password"></property>  
    14.         <property name="mark"></property>  
    15.         <set name="roleUsers" cascade="save-update" inverse="true">  
    16.             <key>  
    17.                 <column name="uid"></column>  
    18.             </key>  
    19.             <one-to-many class="RoleUser" />  
    20.         </set>  
    21.     </class>  
    22. </hibernate-mapping>  
    [html] view plain copy
     
     print?
    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC  
    3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    5.   
    6. <hibernate-mapping package="com.tudou.hibernates.RoleManage">  
    7.     <class name="Role" table="tb_role">  
    8.         <id name="rid" column="rid">  
    9.             <generator class="native">  
    10.             </generator>  
    11.         </id>  
    12.         <property name="roleName" />  
    13.         <property name="dsc" />  
    14.   
    15.         <set name="roleUsers" cascade="save-update" inverse="true">  
    16.             <key>  
    17.                 <column name="rid"></column>  
    18.             </key>  
    19.             <one-to-many class="RoleUser" />  
    20.         </set>  
    21.         <set name="functionRoles" cascade="save-update" inverse="true">  
    22.             <key>  
    23.                 <column name="rid"></column>  
    24.             </key>  
    25.             <one-to-many class="FunctionsRole" />  
    26.         </set>  
    27.     </class>  
    28. </hibernate-mapping>  
    [html] view plain copy
     
     print?
    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC  
    3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    5.   
    6. <hibernate-mapping package="com.tudou.hibernates.RoleManage">  
    7.   
    8.     <class name="RoleUser" table="role_user">  
    9.         <id name="ru_id" column="ru_id">  
    10.             <generator class="native" />  
    11.         </id>  
    12.         <many-to-one name="role" class="Role" cascade="save-update"  
    13.             fetch="select">  
    14.             <column name="rid"></column>  
    15.         </many-to-one>  
    16.         <many-to-one name="user" class="User" cascade="save-update"  
    17.             fetch="select">  
    18.             <column name="uid"></column>  
    19.         </many-to-one>  
    20.     </class>  
    21. </hibernate-mapping>  
    [html] view plain copy
     
     print?
    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC  
    3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    5.   
    6. <hibernate-mapping package="com.tudou.hibernates.RoleManage">  
    7.   
    8.     <class name="FunctionsRole" table="functions_role">  
    9.         <id name="fr_id" column="fr_id">  
    10.             <generator class="native" />  
    11.         </id>  
    12.         <many-to-one name="functions" class="Functions" cascade="save-update"  
    13.             fetch="select">  
    14.             <column name="fid"></column>  
    15.         </many-to-one>  
    16.         <many-to-one name="role" class="Role" cascade="save-update"  
    17.             fetch="select">  
    18.             <column name="rid"></column>  
    19.         </many-to-one>  
    20.     </class>  
    21. </hibernate-mapping>  
    [java] view plain copy
     
     print?
    1. package com.tudou.hibernates.RoleManage;  
    2.   
    3. public class RoleUser {  
    4.     private int ru_id;  
    5.     private Role role;  
    6.     private User user;  
    7.   
    8.     public RoleUser(Role role, User user) {  
    9.         super();  
    10.         this.role = role;  
    11.         this.user = user;  
    12.     }  
    13.   
    14.     public RoleUser() {  
    15.         super();  
    16.     }  
    17.   
    18.     public int getRu_id() {  
    19.         return ru_id;  
    20.     }  
    21.   
    22.     public void setRu_id(int ruId) {  
    23.         ru_id = ruId;  
    24.     }  
    25.   
    26.     public Role getRole() {  
    27.         return role;  
    28.     }  
    29.   
    30.     public void setRole(Role role) {  
    31.         this.role = role;  
    32.     }  
    33.   
    34.     public User getUser() {  
    35.         return user;  
    36.     }  
    37.   
    38.     public void setUser(User user) {  
    39.         this.user = user;  
    40.     }  
    41.   
    42. }  



    [html] view plain copy
     
     print?
      1. package com.tudou.hibernates.RoleManage;  
      2.   
      3. public class FunctionsRole {  
      4.     private int fr_id;  
      5.     private Functions functions;  
      6.     private Role role;  
      7.   
      8.     public FunctionsRole() {  
      9.         super();  
      10.     }  
      11.   
      12.     public FunctionsRole(Functions functions, Role role) {  
      13.         super();  
      14.         this.functions = functions;  
      15.         this.role = role;  
      16.     }  
      17.   
      18.     public int getFr_id() {  
      19.         return fr_id;  
      20.     }  
      21.   
      22.     public void setFr_id(int frId) {  
      23.         fr_id = frId;  
      24.     }  
      25.   
      26.     public Functions getFunctions() {  
      27.         return functions;  
      28.     }  
      29.   
      30.     public void setFunctions(Functions functions) {  
      31.         this.functions = functions;  
      32.     }  
      33.   
      34.     public Role getRole() {  
      35.         return role;  
      36.     }  
      37.   
      38.     public void setRole(Role role) {  
      39.         this.role = role;  
      40.     }  
      41.   
      42. }  
  • 相关阅读:
    【Markdown】Markdown相关问题
    【Eclipse】在Project Explore中隐藏不需要显示的文件
    【Eclipse】编译使用Makefile的C工程
    【C】编译提示 warning: incompatible implicit declaration of built-in function ‘calloc’ [enabled by default]
    【Ubuntu】命令记录
    【Vim】Vim学习
    【Ubuntu】安装配置apahce
    【MPI】执行mpiexec出错
    文件上传(java web)
    使用JavaMail发送邮件
  • 原文地址:https://www.cnblogs.com/mannixiang/p/6663839.html
Copyright © 2011-2022 走看看