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映射配置文件关系总结的主要内容,如果未能解决你的问题,请参考以下文章