RBAC的數據庫建立

一、數據庫,參照網上一些範例,在mysql中創建以下表

Java 代碼
  1. -- Create the datatable named by  'RBAC_User'  to save users.  
  2. create table RBAC_User  
  3. (  
  4.   
  5.  User_ID int  primary key auto_increment,  
  6.    
  7.  User_Name varchar(20 ) not  null ,  
  8.    
  9.  User_PassWord varchar(20 ) not  null ,  
  10.    
  11.  User_Lock bit not null   
  12. );  
  13.   
  14. CREATE UNIQUE INDEX IDX_User ON  RBAC_User(User_Name) ;  
  15.   
  16. -- Create the datatable named by 'RBAC_Group'  to save groups.  
  17. create table RBAC_Group  
  18. (  
  19.    
  20.  Group_ID int  primary key auto_increment,  
  21.    
  22.  Group_Name varchar(20 ) not  null ,  
  23.    
  24.  Group_Description varchar(100 )  
  25. );  
  26.   
  27. CREATE UNIQUE INDEX IDX_Group ON  RBAC_Group(Group_Name) ;  
  28.   
  29. -- Create the datatable named by 'RBAC_Role'  to save roles.  
  30. create table RBAC_Role  
  31. (  
  32.   
  33.  Role_ID int  primary key auto_increment,  
  34.   
  35.  Role_Name varchar(20 ) not  null ,  
  36.   
  37.  Role_Description varchar(100 )  
  38. );  
  39.   
  40. CREATE UNIQUE INDEX IDX_Role ON  RBAC_Role(Role_Name) ;  
  41.   
  42. -- Create the datatable named by 'RBAC_Resource'  to save Resources.  
  43. create table RBAC_Resource  
  44. (  
  45.   
  46.  Resource_ID int  primary key auto_increment,  
  47.   
  48.  Resource_Name varchar(20 ) not  null ,  
  49.   
  50.  Resource_Description varchar(100 )  
  51. );  
  52.   
  53. CREATE UNIQUE INDEX IDX_Resource ON  RBAC_Resource(Resource_Name) ;  
  54.   
  55. -- Create the datatable named by 'RBAC_Operation'  to save Operations.  
  56. create table RBAC_Operation  
  57. (  
  58.   
  59.  Operation_ID int  primary key auto_increment,  
  60.   
  61.  Operation_Name varchar(10 ) not  null ,  
  62.   
  63.  Operation_Description varchar(100 )  
  64. );  
  65.   
  66. CREATE UNIQUE INDEX IDX_Operation ON RBAC_Operation (Operation_Name);  
  67.   
  68.  --Create the datatable named by 'RBAC_UserGroup'  to save userGroup.  
  69. create table RBAC_User_Group   
  70. (  
  71.   
  72.  User_Group_ID int  primary key auto_increment,  
  73.   
  74.  User_ID int  not  null ,  
  75.   
  76.  Group_ID int  not  null ,  
  77.   
  78.  constraint foreign key(User_ID) references RBAC_User(User_ID) ,  
  79.   
  80.  constraint foreign key(Group_ID) references RBAC_Group(Group_ID)  
  81. );  
  82.   
  83. CREATE UNIQUE INDEX IDX_User_Group ON RBAC_User_Group ( User_ID , Group_ID);  
  84.   
  85. -- Create the datatable named by 'RBAC_GroupRole'  to save GroupRoles.  
  86. create table RBAC_Group_Role  
  87. (  
  88.   
  89.  Group_Role_ID int  primary key auto_increment,  
  90.   
  91.  Group_ID int  not  null ,  
  92.   
  93.  Role_ID int  not  null ,  
  94.   
  95.  constraint foreign key(Group_ID) references RBAC_Group(Group_ID) ,  
  96.   
  97.  constraint foreign key(Role_ID) references RBAC_Role(Role_ID)   
  98. );  
  99.   
  100. CREATE UNIQUE INDEX IDX_Group_Role ON RBAC_Group_Role(  Group_ID, Role_ID);  
  101.   
  102. -- Create the datatable named by RBAC_Authority to save authorities.  
  103. create table RBAC_Authority  
  104. (  
  105.   
  106.  Authority_ID int  primary key auto_increment,  
  107.   
  108.  Resource_ID int  not  null ,  
  109.   
  110.  Operation_ID int  not  null ,  
  111.   
  112.  constraint foreign key(Resource_ID) references RBAC_Resource(Resource_ID) ,  
  113.   
  114.  constraint foreign key(Operation_ID) references RBAC_Operation(Operation_ID)   
  115. );  
  116.   
  117. CREATE UNIQUE INDEX IDX_Authority ON RBAC_Authority (Resource_ID, Operation_ID);  
  118.   
  119. -- Create the datatable named by RBAC_Permission to save permissions.  
  120. create table RBAC_Permission  
  121. (  
  122.   
  123.  Permission_ID int  primary key auto_increment,  
  124.   
  125.  Role_ID int  not  null ,  
  126.   
  127.  Authority_ID int  not  null ,  
  128.   
  129.  constraint foreign key(Role_ID) references RBAC_Role(Role_ID) ,  
  130.   
  131.  constraint foreign key(Authority_ID) references RBAC_Authority(Authority_ID)   
  132. );  
  133.   
  134. CREATE UNIQUE INDEX IDX_Permission ON RBAC_Permission (Role_ID, Authority_ID);  
-- Create the datatable named by 'RBAC_User' to save users.
create table RBAC_User
(

 User_ID int primary key auto_increment,
 
 User_Name varchar(20) not null,
 
 User_PassWord varchar(20) not null,
 
 User_Lock bit not null
);

CREATE UNIQUE INDEX IDX_User ON  RBAC_User(User_Name) ;

-- Create the datatable named by 'RBAC_Group' to save groups.
create table RBAC_Group
(
 
 Group_ID int primary key auto_increment,
 
 Group_Name varchar(20) not null,
 
 Group_Description varchar(100)
);

CREATE UNIQUE INDEX IDX_Group ON  RBAC_Group(Group_Name) ;

-- Create the datatable named by 'RBAC_Role' to save roles.
create table RBAC_Role
(

 Role_ID int primary key auto_increment,

 Role_Name varchar(20) not null,

 Role_Description varchar(100)
);

CREATE UNIQUE INDEX IDX_Role ON  RBAC_Role(Role_Name) ;

-- Create the datatable named by 'RBAC_Resource' to save Resources.
create table RBAC_Resource
(

 Resource_ID int primary key auto_increment,

 Resource_Name varchar(20) not null,

 Resource_Description varchar(100)
);

CREATE UNIQUE INDEX IDX_Resource ON  RBAC_Resource(Resource_Name) ;

-- Create the datatable named by 'RBAC_Operation' to save Operations.
create table RBAC_Operation
(

 Operation_ID int primary key auto_increment,

 Operation_Name varchar(10) not null,

 Operation_Description varchar(100)
);

CREATE UNIQUE INDEX IDX_Operation ON RBAC_Operation (Operation_Name);

 --Create the datatable named by 'RBAC_UserGroup' to save userGroup.
create table RBAC_User_Group 
(

 User_Group_ID int primary key auto_increment,

 User_ID int not null,

 Group_ID int not null,

 constraint foreign key(User_ID) references RBAC_User(User_ID) ,

 constraint foreign key(Group_ID) references RBAC_Group(Group_ID)
);

CREATE UNIQUE INDEX IDX_User_Group ON RBAC_User_Group ( User_ID , Group_ID);

-- Create the datatable named by 'RBAC_GroupRole' to save GroupRoles.
create table RBAC_Group_Role
(

 Group_Role_ID int primary key auto_increment,

 Group_ID int not null,

 Role_ID int not null,

 constraint foreign key(Group_ID) references RBAC_Group(Group_ID) ,

 constraint foreign key(Role_ID) references RBAC_Role(Role_ID) 
);

CREATE UNIQUE INDEX IDX_Group_Role ON RBAC_Group_Role(  Group_ID, Role_ID);

-- Create the datatable named by RBAC_Authority to save authorities.
create table RBAC_Authority
(

 Authority_ID int primary key auto_increment,

 Resource_ID int not null,

 Operation_ID int not null,

 constraint foreign key(Resource_ID) references RBAC_Resource(Resource_ID) ,

 constraint foreign key(Operation_ID) references RBAC_Operation(Operation_ID) 
);

CREATE UNIQUE INDEX IDX_Authority ON RBAC_Authority (Resource_ID, Operation_ID);

-- Create the datatable named by RBAC_Permission to save permissions.
create table RBAC_Permission
(

 Permission_ID int primary key auto_increment,

 Role_ID int not null,

 Authority_ID int not null,

 constraint foreign key(Role_ID) references RBAC_Role(Role_ID) ,

 constraint foreign key(Authority_ID) references RBAC_Authority(Authority_ID) 
);

CREATE UNIQUE INDEX IDX_Permission ON RBAC_Permission (Role_ID, Authority_ID);


二、用myEclipse生成pojo、dao後,對hbm.xml的配置部分修改,繞過只起關聯關係的表,改爲把兩個一對多改爲一個多對多。

Java 代碼
  1. //RbacGroup.hbm.xml   
  2.          <set name="rbacUsers"  table= "rbac_user_group"  inverse= "true"  lazy= "true"  cascade= "save-update" >  
  3.             <key>  
  4.                 <column name="Group_ID"  not- null = "true"  />  
  5.             </key>  
  6.             <many-to-many class = "dao.rbac.RbacGroup"  column= "User_ID"  />  
  7.         </set>  
  8.         <set name="rbacRoles"  table= "rbac_group_role"  inverse= "true"  lazy= "true"  cascade= "save-update" >  
  9.             <key>  
  10.                 <column name="Group_ID"  not- null = "true"  />  
  11.             </key>  
  12.             <many-to-many class = "dao.rbac.RbacGroup"  column= "Role_ID"  />  
  13.         </set>  
  14. //RbacUser.hbm.xml   
  15.          <set name="rbacGroups"   table= "rbac_user_group"  inverse= "false"  lazy= "true"  cascade= "save-update" >  
  16.             <key>  
  17.                 <column name="User_ID"  not- null = "true"  />  
  18.             </key>  
  19.             <many-to-many class = "dao.rbac.RbacUser"  column= "Group_ID"  />  
  20.         </set>  
  21.   
  22. //RbacRole.hbm.xml   
  23.          <set name="rbacGroups"  table= "rbac_group_role"  inverse= "false"  lazy= "true"  cascade= "save-update" >  
  24.             <key>  
  25.                 <column name="Role_ID"  not- null = "true"  />  
  26.             </key>  
  27.             <many-to-many class = "dao.rbac.RbacRole"  column= "Group_ID"  />  
  28.         </set>  
//RbacGroup.hbm.xml
         <set name="rbacUsers" table="rbac_user_group" inverse="true" lazy="true" cascade="save-update">
            <key>
                <column name="Group_ID" not-null="true" />
            </key>
            <many-to-many class="dao.rbac.RbacGroup" column="User_ID" />
        </set>
        <set name="rbacRoles" table="rbac_group_role" inverse="true" lazy="true" cascade="save-update">
            <key>
                <column name="Group_ID" not-null="true" />
            </key>
            <many-to-many class="dao.rbac.RbacGroup" column="Role_ID" />
        </set>
//RbacUser.hbm.xml
         <set name="rbacGroups"  table="rbac_user_group" inverse="false" lazy="true" cascade="save-update">
            <key>
                <column name="User_ID" not-null="true" />
            </key>
            <many-to-many class="dao.rbac.RbacUser" column="Group_ID" />
        </set>

//RbacRole.hbm.xml
         <set name="rbacGroups" table="rbac_group_role" inverse="false" lazy="true" cascade="save-update">
            <key>
                <column name="Role_ID" not-null="true" />
            </key>
            <many-to-many class="dao.rbac.RbacRole" column="Group_ID" />
        </set>


三、pojo中集合屬性的修改,和以上配置保持一致,略...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章