您的位置:首页 > 其它

t3用户-角色-权限hibernate经典配置

2011-11-14 18:05 148 查看
用户-角色-权限hibernate经典配置。
既然有人问起,我就写下说明吧。在文章中间的配置文件那里。权当回忆一下,也帮助更多人。这是以前学校时写的,没有注释。都是贴的代码笔记。看到的莫要见怪。欢迎学习交流。
首先是三个实体类:
用户-》角色-》权限
packagecom.tudou.hibernates.RoleManage;

importjava.util.HashSet;
importjava.util.Set;

publicclassUser{
privateintuid;
privateStringuserName;
privateStringnickName;
privateStringpassword;
privateStringmark;
privateSet<RoleUser>roleUsers=newHashSet<RoleUser>();

publicUser(){
super();
}

publicUser(StringuserName,StringnickName,Stringpassword,Stringmark,
Set<RoleUser>roleUsers){
super();
this.userName=userName;
this.nickName=nickName;
this.password=password;
this.mark=mark;
this.roleUsers=roleUsers;
}

publicintgetUid(){
returnuid;
}

publicvoidsetUid(intuid){
this.uid=uid;
}

publicStringgetUserName(){
returnuserName;
}

publicvoidsetUserName(StringuserName){
this.userName=userName;
}

publicStringgetNickName(){
returnnickName;
}

publicvoidsetNickName(StringnickName){
this.nickName=nickName;
}

publicStringgetPassword(){
returnpassword;
}

publicvoidsetPassword(Stringpassword){
this.password=password;
}

publicStringgetMark(){
returnmark;
}

publicvoidsetMark(Stringmark){
this.mark=mark;
}

publicSet<RoleUser>getRoleUsers(){
returnroleUsers;
}

publicvoidsetRoleUsers(Set<RoleUser>roleUsers){
this.roleUsers=roleUsers;
}

}


packagecom.tudou.hibernates.RoleManage;

importjava.util.HashSet;
importjava.util.Set;

publicclassRole{
privateintrid;
privateStringroleName;
privateStringdsc;
privateSet<RoleUser>roleUsers=newHashSet<RoleUser>();
privateSet<FunctionsRole>functionRoles=newHashSet<FunctionsRole>();

publicRole(){
super();
}

publicRole(StringroleName,Stringdsc,Set<RoleUser>roleUsers,
Set<FunctionsRole>functionRoles){
super();
this.roleName=roleName;
this.dsc=dsc;
this.roleUsers=roleUsers;
this.functionRoles=functionRoles;
}

publicintgetRid(){
returnrid;
}

publicvoidsetRid(intrid){
this.rid=rid;
}

publicStringgetRoleName(){
returnroleName;
}

publicvoidsetRoleName(StringroleName){
this.roleName=roleName;
}

publicStringgetDsc(){
returndsc;
}

publicvoidsetDsc(Stringdsc){
this.dsc=dsc;
}

publicSet<RoleUser>getRoleUsers(){
returnroleUsers;
}

publicvoidsetRoleUsers(Set<RoleUser>roleUsers){
this.roleUsers=roleUsers;
}

publicSet<FunctionsRole>getFunctionRoles(){
returnfunctionRoles;
}

publicvoidsetFunctionRoles(Set<FunctionsRole>functionRoles){
this.functionRoles=functionRoles;
}

}


packagecom.tudou.hibernates.RoleManage;

importjava.util.HashSet;
importjava.util.Set;

publicclassFunctions{
privateintfid;
privateStringfunctionName;
privateStringmark;
privateSet<FunctionsRole>functionRoles=newHashSet<FunctionsRole>();

publicFunctions(StringfunctionName,Stringmark,
Set<FunctionsRole>functionRoles){
super();
this.functionName=functionName;
this.mark=mark;
this.functionRoles=functionRoles;
}

publicFunctions(){
super();
}

publicintgetFid(){
returnfid;
}

publicvoidsetFid(intfid){
this.fid=fid;
}

publicStringgetFunctionName(){
returnfunctionName;
}

publicvoidsetFunctionName(StringfunctionName){
this.functionName=functionName;
}

publicStringgetMark(){
returnmark;
}

publicvoidsetMark(Stringmark){
this.mark=mark;
}

publicSet<FunctionsRole>getFunctionRoles(){
returnfunctionRoles;
}

publicvoidsetFunctionRoles(Set<FunctionsRole>functionRoles){
this.functionRoles=functionRoles;
}

}


用户-角色-权限关系如下:

一个用户user对应多个角色role,一个角色对应多个用户,关系为多对多many-to-many

一个角色role对应多个权限functions,一个权限也对应多个角色。

这个自不必说。

主要是如何维护呢。

如下所示:

多对多必然产生中间表进行关联。

user与role产生中间表userRole。则user与userRole的关系为one-to-many。理解为一个用户可以有多个权限对应。role与userRole的关系为one-to-many。理解为一个权限可以有多个用户对应。

其次就是角色role与权限function,中间表为roleFunction,他们之前的关系如上。

只不过role表在中间,即与user表是多对多的关系,又与function表是多对多的关系。所以role会产生2张中间表,一张userRole,一张roleFunction而已。

role与这2张中间表都是one-to-many的关系,反之,它们与role却都是many-to-one的关系。

user->userRole->role->roleFunction->function

user->userRole一对多,role->userRole一对多,则user->role多对多

role->roleFunction一对多,function->roleFunction一对多,则role->function多对多

说白了就是把2个多对多,分解成了4个一对多【其实就是2对一对多】而已。

这样写来。再看配置,则是一目了然了。

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mappingpackage="com.tudou.hibernates.RoleManage">
<classname="User"table="tb_user">
<idname="uid"column="uid">
<generatorclass="native"/>
</id>
<propertyname="userName"></property>
<propertyname="nickName"></property>
<propertyname="password"></property>
<propertyname="mark"></property>
<setname="roleUsers"cascade="save-update"inverse="true">
<key>
<columnname="uid"></column>
</key>
<one-to-manyclass="RoleUser"/>
</set>
</class>
</hibernate-mapping>


<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mappingpackage="com.tudou.hibernates.RoleManage">
<classname="Role"table="tb_role">
<idname="rid"column="rid">
<generatorclass="native">
</generator>
</id>
<propertyname="roleName"/>
<propertyname="dsc"/>

<setname="roleUsers"cascade="save-update"inverse="true">
<key>
<columnname="rid"></column>
</key>
<one-to-manyclass="RoleUser"/>
</set>
<setname="functionRoles"cascade="save-update"inverse="true">
<key>
<columnname="rid"></column>
</key>
<one-to-manyclass="FunctionsRole"/>
</set>
</class>
</hibernate-mapping>


<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mappingpackage="com.tudou.hibernates.RoleManage">

<classname="RoleUser"table="role_user">
<idname="ru_id"column="ru_id">
<generatorclass="native"/>
</id>
<many-to-onename="role"class="Role"cascade="save-update"
fetch="select">
<columnname="rid"></column>
</many-to-one>
<many-to-onename="user"class="User"cascade="save-update"
fetch="select">
<columnname="uid"></column>
</many-to-one>
</class>
</hibernate-mapping>


<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mappingpackage="com.tudou.hibernates.RoleManage">

<classname="FunctionsRole"table="functions_role">
<idname="fr_id"column="fr_id">
<generatorclass="native"/>
</id>
<many-to-onename="functions"class="Functions"cascade="save-update"
fetch="select">
<columnname="fid"></column>
</many-to-one>
<many-to-onename="role"class="Role"cascade="save-update"
fetch="select">
<columnname="rid"></column>
</many-to-one>
</class>
</hibernate-mapping>


packagecom.tudou.hibernates.RoleManage;

publicclassRoleUser{
privateintru_id;
privateRolerole;
privateUseruser;

publicRoleUser(Rolerole,Useruser){
super();
this.role=role;
this.user=user;
}

publicRoleUser(){
super();
}

publicintgetRu_id(){
returnru_id;
}

publicvoidsetRu_id(intruId){
ru_id=ruId;
}

publicRolegetRole(){
returnrole;
}

publicvoidsetRole(Rolerole){
this.role=role;
}

publicUsergetUser(){
returnuser;
}

publicvoidsetUser(Useruser){
this.user=user;
}

}


packagecom.tudou.hibernates.RoleManage;

publicclassFunctionsRole{
privateintfr_id;
privateFunctionsfunctions;
privateRolerole;

publicFunctionsRole(){
super();
}

publicFunctionsRole(Functionsfunctions,Rolerole){
super();
this.functions=functions;
this.role=role;
}

publicintgetFr_id(){
returnfr_id;
}

publicvoidsetFr_id(intfrId){
fr_id=frId;
}

publicFunctionsgetFunctions(){
returnfunctions;
}

publicvoidsetFunctions(Functionsfunctions){
this.functions=functions;
}

publicRolegetRole(){
returnrole;
}

publicvoidsetRole(Rolerole){
this.role=role;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: