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

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

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

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

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

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

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

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

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

c51a405049e9a34361b27076fd655787.png

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

83e4029ed33f7f6e510614ccf87d12bb.png

1aaa1add4349c774758231402fcddcd7.png

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

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

36ecd29fdb0741cfe44bba3c842789df.png

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

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

3dbc2f90ff0fb64dcd89722db204b392.png

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

7c6d3df2d18f4ce57255b4ade7b21ebd.png

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

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

e9d828a1b18aa7502ad61871770c6ddb.png

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

9154f8f503c9c63f059f5c20a75dced8.png

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

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

key指明对应的列,

76bc4e072882ec434e75165871257652.png

角色类中有userDetails属性

64baf3549ea7489c8e34678665eb6486.png

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

1d4b2257e518e144259be33f9fd115eb.png

62bb630292906e4be8558d04a47f22f4.png

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

a100e8ce2a7b07bc17f340151b05200e.png

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

90b10394d0dfcabaf891748b67ef30e7.png

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

1bd358f64d0b5d0bbcb53db4826c3881.png

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

11e35148d97f86372edc393a7c0d6b61.png

(2)正确

403eaca6deaca0ba16ba5a1d51009e97.png

(3)正确

65ef6b686785f9a353568987b4504d3d.png

(4)正确

23d4e87a36adea56f05ba0d49cd23095.png

(5)正确

6f2565e1e3460797557535f133cf9512.png

(6)正确

1a3697683a3d906d66df482e555fd812.png

(7)正确

2e9a1445edf3fbcacc6915ab21389ac9.png

(8)正确

d811f8175eaee4d88ffb37d4be086bee.png

四、总结

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

(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

原文:http://blog.csdn.net/u013082989/article/details/50983650

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值