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)权限类是自关联的,因为分为若干级权限。

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第1张图片

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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第2张图片

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第3张图片

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

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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第4张图片

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

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

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


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

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


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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第5张图片

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

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

key指明对应的列,

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第6张图片

角色类中有userDetails属性

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第7张图片

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


javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第8张图片

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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第9张图片

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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第10张图片

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


javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第11张图片

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

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第12张图片

(2)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第13张图片

(3)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第14张图片

(4)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第15张图片

(5)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第16张图片

(6)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第17张图片

(7)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第18张图片

(8)正确

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结_第19张图片

四、总结

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

(1)一对一(外键)
    主表

    副表

(2)一对多



(3)多对一

(4)多对多



一对多和多对多要有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,原创,GitHub,SqlSerevr)