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

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

一个用户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对一对多】而已。

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

  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. <hibernate-mapping package="com.tudou.hibernates.RoleManage">
  6. <class name="User" table="tb_user">
  7. <id name="uid" column="uid">
  8. <generator class="native" />
  9. </id>
  10. <property name="userName"></property>
  11. <property name="nickName"></property>
  12. <property name="password"></property>
  13. <property name="mark"></property>
  14. <set name="roleUsers" cascade="save-update" inverse="true">
  15. <key>
  16. <column name="uid"></column>
  17. </key>
  18. <one-to-many class="RoleUser" />
  19. </set>
  20. </class>
  21. </hibernate-mapping>
  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. <hibernate-mapping package="com.tudou.hibernates.RoleManage">
  6. <class name="Role" table="tb_role">
  7. <id name="rid" column="rid">
  8. <generator class="native">
  9. </generator>
  10. </id>
  11. <property name="roleName" />
  12. <property name="dsc" />
  13. <set name="roleUsers" cascade="save-update" inverse="true">
  14. <key>
  15. <column name="rid"></column>
  16. </key>
  17. <one-to-many class="RoleUser" />
  18. </set>
  19. <set name="functionRoles" cascade="save-update" inverse="true">
  20. <key>
  21. <column name="rid"></column>
  22. </key>
  23. <one-to-many class="FunctionsRole" />
  24. </set>
  25. </class>
  26. </hibernate-mapping>
  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. <hibernate-mapping package="com.tudou.hibernates.RoleManage">
  6. <class name="RoleUser" table="role_user">
  7. <id name="ru_id" column="ru_id">
  8. <generator class="native" />
  9. </id>
  10. <many-to-one name="role" class="Role" cascade="save-update"
  11. fetch="select">
  12. <column name="rid"></column>
  13. </many-to-one>
  14. <many-to-one name="user" class="User" cascade="save-update"
  15. fetch="select">
  16. <column name="uid"></column>
  17. </many-to-one>
  18. </class>
  19. </hibernate-mapping>
  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. <hibernate-mapping package="com.tudou.hibernates.RoleManage">
  6. <class name="FunctionsRole" table="functions_role">
  7. <id name="fr_id" column="fr_id">
  8. <generator class="native" />
  9. </id>
  10. <many-to-one name="functions" class="Functions" cascade="save-update"
  11. fetch="select">
  12. <column name="fid"></column>
  13. </many-to-one>
  14. <many-to-one name="role" class="Role" cascade="save-update"
  15. fetch="select">
  16. <column name="rid"></column>
  17. </many-to-one>
  18. </class>
  19. </hibernate-mapping>
  1. package com.tudou.hibernates.RoleManage;
  2. public class RoleUser {
  3. private int ru_id;
  4. private Role role;
  5. private User user;
  6. public RoleUser(Role role, User user) {
  7. super();
  8. this.role = role;
  9. this.user = user;
  10. }
  11. public RoleUser() {
  12. super();
  13. }
  14. public int getRu_id() {
  15. return ru_id;
  16. }
  17. public void setRu_id(int ruId) {
  18. ru_id = ruId;
  19. }
  20. public Role getRole() {
  21. return role;
  22. }
  23. public void setRole(Role role) {
  24. this.role = role;
  25. }
  26. public User getUser() {
  27. return user;
  28. }
  29. public void setUser(User user) {
  30. this.user = user;
  31. }
  32. }
    1. package com.tudou.hibernates.RoleManage;
    2. public class FunctionsRole {
    3. private int fr_id;
    4. private Functions functions;
    5. private Role role;
    6. public FunctionsRole() {
    7. super();
    8. }
    9. public FunctionsRole(Functions functions, Role role) {
    10. super();
    11. this.functions = functions;
    12. this.role = role;
    13. }
    14. public int getFr_id() {
    15. return fr_id;
    16. }
    17. public void setFr_id(int frId) {
    18. fr_id = frId;
    19. }
    20. public Functions getFunctions() {
    21. return functions;
    22. }
    23. public void setFunctions(Functions functions) {
    24. this.functions = functions;
    25. }
    26. public Role getRole() {
    27. return role;
    28. }
    29. public void setRole(Role role) {
    30. this.role = role;
    31. }
    32. }

t3用户-角色-权限hibernate经典配置的更多相关文章

  1. 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面

    这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...

  2. [.Net MVC] 用户角色权限管理_使用CLK.AspNet.Identity

    项目:后台管理平台 意义:一个完整的管理平台需要提供用户注册.登录等功能,以及认证和授权功能. 一.为何使用CLK.AspNet.Identity 首先简要说明所采取的权限控制方式.这里采用了基于角色 ...

  3. 扩展RBAC用户角色权限设计方案(转载)

    扩展RBAC用户角色权限设计方案  来源:https://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html https://blog.csd ...

  4. spring-boot-plus V1.4.0发布 集成用户角色权限部门管理

    RBAC用户角色权限 用户角色权限部门管理核心接口介绍 Shiro权限配置

  5. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  6. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  7. [转]扩展RBAC用户角色权限设计方案

    原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...

  8. 扩展RBAC用户角色权限设计方案

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  9. RBAC用户角色权限设计方案

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用 户-角色 ...

随机推荐

  1. play framework - 初识

    背景 研发代码框架是play-framework框架,想看代码的话,需要学习下play框架.IDE工具的话之前一直用的idea,所以本文涉及的idea play的配置 和 一些play的简单知识 认识 ...

  2. ASP.NET微信公众号用于给指定OpenId用户发送红包

    ASP.NET微信公众号用于给指定OpenId用户发送红包 微信公众号要实现对指定用户发送红包,必须指定一个存放兵发放金额的商户号,在微信商户平台里面申请商户号并获取相关参数例如发送红包所要用到的安全 ...

  3. C#为什么不能像C/C++一样的支持函数只读传参

    C#为什么不能像C/C++一样的支持函数只读传参? 这个问题其实问的人挺多的,我自己也经常想实现这个功能,但是发现总是那么的不尽人意. 有些人倒是给出了一下答案,但是都不能很好的解决像C/C++一样的 ...

  4. 2019年微服务实践第一课,网易&谐云&蘑菇街&奥思技术大咖深度分享

    微服务的概念最早由Martin Fowler与James Lewis于2014年共同提出,核心思想是围绕业务能力组织服务,各个微服务可被独立部署,服务间是松耦合的关系,以及数据和治理的去中心化管理.微 ...

  5. ssh登录时在参数中加入密码的解决方案

    在使用ssh登录远程服务器的时候,在执行完ssh user@ip后,要输入登录密码,有时候登录密码记不住,这样以来Ian带来的很多的麻烦,有没有一种在ssh的参数中直接加入密码的方法呢?查看ssh的帮 ...

  6. [HTML] css3 输入框input类型为number时,去掉上下箭头方式

    <input type="number" ...> <style> input::-webkit-outer-spin-button, input::-we ...

  7. Windows下Mongodb安装及配置

    安装文件:MongoDB-win32-x86_64-2008plus-ssl-3.2.6-signed.msi 电脑配置:win7 64位 mongodb的安装很简单,设置好安装路径后,一直Next直 ...

  8. 机器学习基石笔记:16 Three Learning Principles

    三个理论上界: 三个线性模型: 三个关键工具: 三条学习规则: 1.奥卡姆剃刀定律 先从简单模型开始, 训练后出现欠拟合, 再尝试复杂点模型. 2.采样误差 训练.验证.测试数据尽量同分布. 3.数据 ...

  9. redis常用命令(二)

    一.集合(set) 单值多value,vaue不能重复 sadd/smembers/sismember 添加数据/获取set所有数据/判断是否存在某个值 scard 获取集合里面的元素个数 srem ...

  10. 在Ubuntu 16.04上利用Jexus+.Net Core+Linux版SQL Server部署ZKEACMS.Core

    百度传课视频地址:https://chuanke.baidu.com/v5849090-223278-1498090.html 一.SQL Server on Linux的安装 官方文档:https: ...