OA项目15:权限管理实体设计及映射

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

一 实体设计:

  1.权限实体设计:

   1)属性设计:

    主键:id

    关联属性:Set<Role> roles,Set<Privilege> privileges,Privilege parent,Set<Privilege> children

    一般属性:name,url

    特殊属性:暂无

   2)涉及到3个实体:User(用户),Role(岗位角色),Privilege(权限)。其关系映射如下图:

    

二 javabean,映射文件,表的创建:

  1.javabean:Privilege.java 

  

 1 package cn.clear.oa.domain;
 2
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 /**
 6  * 权限实体类
 7  * @ClassName: Privilege
 8  * @Description: TODO
 9  * @author: clear
10  * @date: 2014-10-29 下午4:45:21
11  */
12 public class Privilege {
13
14     private Long id;
15     private String name;
16     private String url;
17     private Privilege parent;
18     private Set<Role> roles = new HashSet<Role>();
19     private Set<Privilege> children = new HashSet<Privilege>();
20     public Long getId() {
21         return id;
22     }
23     public void setId(Long id) {
24         this.id = id;
25     }
26     public String getName() {
27         return name;
28     }
29     public void setName(String name) {
30         this.name = name;
31     }
32     public String getUrl() {
33         return url;
34     }
35     public void setUrl(String url) {
36         this.url = url;
37     }
38     public Set<Role> getRoles() {
39         return roles;
40     }
41     public void setRoles(Set<Role> roles) {
42         this.roles = roles;
43     }
44     public Privilege getParent() {
45         return parent;
46     }
47     public void setParent(Privilege parent) {
48         this.parent = parent;
49     }
50     public Set<Privilege> getChildren() {
51         return children;
52     }
53     public void setChildren(Set<Privilege> children) {
54         this.children = children;
55     }
56
57 }

Privilege.java

  2.Privilege.hbm.xml:

  

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5
 6 <hibernate-mapping package="cn.clear.oa.domain">
 7     <class name="Privilege" table="oa_privilege">
 8         <id name="id">
 9             <generator class="native" />
10         </id>
11         <property name="name" />
12         <property name="url" />
13         <!-- roles属性,本类与Role的多对多 -->
14         <set name="roles" table="oa_privilege_role">
15             <key column="privilegeId"></key>
16             <many-to-many class="Role" column="roleId"></many-to-many>
17         </set>
18         <!-- parent属性,本类与Privilege(上级)的多对一 -->
19         <many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>
20         <!-- children属性,本类与Privilege(下级级)的一对多 -->
21         <set name="children" cascade="delete" order-by="id ASC">
22             <key column="parentId"></key>
23             <one-to-many class="Privilege"/>
24         </set>
25     </class>
26 </hibernate-mapping>

Privilege.hbm.xml

  3.在Role.java中加入和权限的关联属性:

  private Set<Privilege> privileges = new HashSet<Privilege>();

  //get与set方法

  public Set<Privilege> getPrivileges() {

    return privileges;

  }

  public void setPrivileges(Set<Privilege> privileges) {

    this.privileges = privileges;

  }

  4.在Role.hbm.xml中加入和权限的关联关系属性:

  <!-- privileges属性,本类与Privilege的多对多 -->

  <set name="privileges" table="oa_privilege_role">

    <key column="roleId"></key>

    <many-to-many class="Privilege" column="privilegeId"></many-to-many>

  </set>

  5.将Privilege.hbm.xml加入hibernate.cfg.xml中:

  <mapping resource="cn/clear/oa/domain/Privilege.hbm.xml" />

  6.测试建表。

时间: 2024-10-12 17:37:39

OA项目15:权限管理实体设计及映射的相关文章

RBAC用户权限管理数据库设计

http://minjiechenjava.iteye.com/blog/1759482 RBAC用户权限管理数据库设计 博客分类: RBAC 权限设计 RBAC RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数

Shiro学习(23)多项目集中权限管理

在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管理>和<第十六章 综合实例>,本章代码都是基于这两章的代码基础上完成的. 本章示例是同域名的场景下完成的,如果跨域请参考<第十五章 单点登录>和<第十七章 OAuth2集成>了解使用CAS或OAuth2实现跨域的身份验证和授权.另外比如客户端/服务器端的安全校验可参考

ASP.NET Core搭建多层网站架构【4.1-网站数据库实体设计及映射配置】

2020/01/28, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[4.1-网站数据库实体设计及映射配置] 文章目录 此分支项目代码 本章节介绍后台管理的网站数据库实体设计 需求分析 首先要实现的功能有用户登录.角色管理.日志记录 大概有四张表:用户表.密码表.角色表.日志表 日志表: 用户表: 密码表: 角色表: 好像博客园md不支持表格功能?所以只能截图展示,excel表格上传至项目docs文件夹中 字段设计

OA项目9:部门管理的上下级部门的功能实现

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 功能分析: 1,列表页面只显示一层的(同级的)部门数据,默认显示最顶级的部门列表. 2,点击部门名称,可以查看此部门相应的下级部门列表. 3,删除部门时,同时删除此部门的所有下级部门. 4,上级部门的列表是有层次结构的(树形). 5,如果是修改:上级部门列表中不能显示当前修改的部门及其子孙部门.因为不能选择自已或自已的子部门作为上级部门. 二 首先,将

权限管理模块设计

转:https://www.cnblogs.com/myindex/p/9116177.html 我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色,一个角色拥有多个权限.这样,就构造成“用户-角色-权限”的授权模型.在这种模型中,用户与角色之间.角色与权限之间,通常都是多对多的关系.如下图: 基于这个,得先了解角色到底是什么?我们可以理解它为一定数量的权限的集合,是一个权限的载体.例如:一个论坛的“管理员”.“版主”,它们都是角色.但是所能做的事情

权限管理架构设计及实现思路

规划权限管理至少实现菜单权限.界面权限.动作权限(按钮).服务权限. 研究如何实现数据权限等细粒度权限. (1)系统菜单管理 EF架构~性能高效的批量操作(Insert篇)

OA项目之权限设计②

1.接着昨天的今天到了设计怎样成功的实现权限分配的功能,首先我们看下这些功能的过程例如以下图: 首先是从user的list页面看到设置权限的button,点击进去进入设置权限的页面 进入设置权限页面,看到的是权限的数据例如以下图: 分析这当中有几个请求:点击设置权限进入权限页面,这都是在Role的Action中做的跟他的改动感觉几乎相同,可是须要注意的是从设置权限进入到分配权限传递的是id.进入页面后我们须要回显,而且将全部的权限数据都显示在分配权限的页面中,这都是要准备的. 以下就在RoleA

OA项目之权限设计③

1.接着上一篇来,上一篇我们写好了基本的要求,还需要加上的有回显数据的方法,我们需要知道其实在页面传递的都是id显示的是id对应实体的name,所以想要回显就是需要得到privilegeIds,如果像上一篇在jsp利用checkbox来显示的话,虽然能显示但是不方便不好换行,显示树状结构也很麻烦,所以我们改善一下利用自己在jsp中写一段代码来实现同样的功能,代码Jsp代码如下: <%@ page language="java" import="java.util.*&q

OA项目之部门管理的功能实现

1.部门管理和岗位管理的功能实现是差不多的,首先看下都有哪些功能如图:(这里需要注意的比如如何显示上级部门?在添加的时候如何以树的结构来显示?等等需要非常注意的,本人在这其中遇到很多很多的错误,修改找错大改半天的时间,真的是看起来容易,动起手来都是错!!) 2.分析完功能,首先要做的就是几个请求?需要几个页面?需要几个方法?知道了以后先写DepartmentAction 解释:其中list方法是显示数据库中的相关数据,包括上级部门,上级部门是通过parent.name属性获取的,等下在jsp页面