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;
}
}
相关文章推荐
- t3用户-角色-权限hibernate经典配置
- 权限资源经典配置【用户+角色+权限+部门】
- javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结
- 经典web系统学习,只有用户-角色,没有权限项
- Jenkins用户权限和角色配置
- cloudify-2.5.0配置用户权限和角色
- 关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
- 角色和权限Hibernate实体映射配置
- 有关用户角色和权限的管理配置问题
- 权限访问之判断——hibernate用户、角色、请求三表ManyToMany关联查询
- shiro 用户权限管理(1)----配置 (springmvc+jpa+hibernate+maven环境)
- jenkins 配置用户项目角色权限
- 角色和权限Hibernate实体映射配置
- Oracle 用户、对象权限、系统权限、角色、配置文件
- 浅析Yii中使用RBAC的完全指南(用户角色权限控制)
- 用户、角色和权限开发(转载)
- java用户角色权限设计
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(26)-权限管理系统-分配角色给用户
- 用户、角色和权限,多表查询
- java用户角色权限设计