最近做一个OA系统,用到了Hibernate框架,我发现,权限和角色的关系是一种多对多的关系,一个权限可以分配给多个角色,一个角色拥有多个权限,
Hibernate单向多对多
。多对多关系有两种,一种是单向的,一种是多向的。对于这个问题,曾经让我很犯难。单纯在语言上理解,会比较复杂,而从代码上理解,可能就会明白了。
下面模拟为角色授权的过程:
1,Hibernate使用Annotation
2,使用Junit进行测试。
3,使用Mysql作为后台数据库。
4,Hibernate不使用自动建表,也不采用反向工程。
过程 :
1,建表:
数据表结构采用如图所示:
SQL语句:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE role( #角色表
RoleId INT PRIMARY KEY AUTO_INCREMENT , #角色ID
RoleName VARCHAR(20) NOT NULL #角色名称
) ;
CREATE TABLE privilege( #权限表
PrivilegeId INT PRIMARY KEY , #权限ID
PrivilegeName VARCHAR(45) NOT NULL #权限表
) ;
CREATE TABLE privilege_role( #权限_角色中间表
RoleId INT ,
PrivilegeId INT ,
PRIMARY KEY (RoleId,PrivilegeId) ,
CONSTRAINT fk_privilege_role FOREIGN KEY(RoleId) REFERENCES role(RoleId) ,
CONSTRAINT fk_role_privilege FOREIGN KEY(PrivilegeId) REFERENCES privilege(PrivilegeId)
) ;
2,hibernate.cfg.xml文件:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15