最近做一個OA系統(tǒng),用到了Hibernate框架,我發(fā)現,權限和角色的關系是一種多對多的關系,一個權限可以分配給多個角色,一個角色擁有多個權限,
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