javaEE 用户部门角色权限实体的关系设计与hibernate映射配置文件关系总结

Posted 莫失莫忘Lawlite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaEE 用户部门角色权限实体的关系设计与hibernate映射配置文件关系总结相关的知识,希望对你有一定的参考价值。


文章中的项目文件已经放到Github上,欢迎大家Follow,star,

地址:https://github.com/lawlite19/SmartEducation


一:设计实体,我这里通过uml设计,然后直接可以生成java实体类(方便查看各个类的关系)

(1)用户登录类User与用户详细信息类UserDetails为一对一关系;

(2)用户详细信息类UserDetails与部门为多对一关系;(一个部门有多个用户)

(3)部门类是自关联的,有上级部门;

(3)用户详细类UserDetails与角色类Role为多对多的关系;(一个用户可有多个角色,一个角色也可对应多个用 户)

(4)角色类Role与权限类Privilege类为多对多关系;(一个角色可有多个权限,一个权限也可对应多个角色)

(5)权限类是自关联的,因为分为若干级权限。

技术分享

然后直接可以到处java实体类,

技术分享

技术分享

然后拷贝到MyEclipse中,生成get、set方法

二:写hibernate的hbm.xml映射文件,普通的属性切分两屏对着写就行了,主要说下实体之间对应的关系

技术分享

(1)用户类与用户信息类为一对一,我用的外键关联(即用户表中存有用户信息表的主键Id)

在用户信息类中有user属性:(cascade是级联)

技术分享

在用户表中有userDetails属性,指明创建数据库表时列名colum="UserDetails_Id"

技术分享

(2)部门类和用户信息类是多对一

在用户信息类中有department属性,对应表中存储部门的Id:

技术分享

在部门类中有userDetails属性,key为指明对应的列:

技术分享

(3)用户信息类与角色类为多对多

用户信息类中有roles属性,指明中间表为T_UserDetails_Role:(多对多关系需要创建一个中间表,分别存储两个表的主键Id)

key指明对应的列,

技术分享

角色类中有userDetails属性

技术分享

(4)也是多对多,与上相同

技术分享

技术分享

(5)部门自关联,上级部门为多对一,下级部门则为一对多

技术分享

(6)权限自关联,与上相同

技术分享

三:测试,在创建sessionFactory的时候创建表,写个JUnit测试执行


技术分享

(1)发现表自动创建成功,下面我们主要检查一下关系对应的是否正确

技术分享

(2)正确

技术分享

(3)正确

技术分享

(4)正确

技术分享

(5)正确

技术分享

(6)正确

技术分享

(7)正确

技术分享

(8)正确

技术分享

四、总结

主要总结一下关系的对应:

(1)一对一(外键)
    主表
<many-to-one name="" class="" column="" unique="true">
    副表
<one-to-one name="" class="" cascade="all"></one-to-one>

(2)一对多
<set name="">
<key column=""></key>
<one-to-many class="" />
</set>

(3)多对一
<many-to-one name="" class="" column="">
</many-to-one>

(4)多对多
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""></many-to-many>
</set>

一对多和多对多要有set,多对多中要多table和column属性

步骤:

1、写注释对应关系

即:xx属性,本类与yy类的zz关系

2、将上面的模板拷贝

3、填写:(1)name---->xx

 (2)class---->yy

 (3)

1)many-to-one中column---->yy_Id(看个人习惯)

2)one-to-many中key----->对方many-to-one中的column属性

3)many-to-many中key---->本对象_Id(看个人习惯)

     many-to-many中column---->yy_Id

 






































以上是关于javaEE 用户部门角色权限实体的关系设计与hibernate映射配置文件关系总结的主要内容,如果未能解决你的问题,请参考以下文章

基于项目的角色的数据库设计

项目后台管理之权限管理(RBAC)

我的权限设计

权限设计的总结

数据权限设计思路(摘抄)

RBAC用户角色权限设计