首页 > 代码库 > OA项目15:权限管理实体设计及映射

OA项目15:权限管理实体设计及映射

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

一 实体设计:

  1.权限实体设计:

   1)属性设计:

    主键:id

    关联属性:Set<Role> roles,Set<Privilege> privileges,Privilege parent,Set<Privilege> children

    一般属性:name,url

    特殊属性:暂无

   2)涉及到3个实体:User(用户),Role(岗位角色),Privilege(权限)。其关系映射如下图:

    

二 javabean,映射文件,表的创建:

  1.javabean:Privilege.java 

  
 1 package cn.clear.oa.domain; 2  3 import java.util.HashSet; 4 import java.util.Set; 5 /** 6  * 权限实体类 7  * @ClassName: Privilege 8  * @Description: TODO 9  * @author: clear10  * @date: 2014-10-29 下午4:45:2111  */12 public class Privilege {13 14     private Long id;15     private String name;16     private String url;17     private Privilege parent;18     private Set<Role> roles = new HashSet<Role>();19     private Set<Privilege> children = new HashSet<Privilege>();20     public Long getId() {21         return id;22     }23     public void setId(Long id) {24         this.id = id;25     }26     public String getName() {27         return name;28     }29     public void setName(String name) {30         this.name = name;31     }32     public String getUrl() {33         return url;34     }35     public void setUrl(String url) {36         this.url = url;37     }38     public Set<Role> getRoles() {39         return roles;40     }41     public void setRoles(Set<Role> roles) {42         this.roles = roles;43     }44     public Privilege getParent() {45         return parent;46     }47     public void setParent(Privilege parent) {48         this.parent = parent;49     }50     public Set<Privilege> getChildren() {51         return children;52     }53     public void setChildren(Set<Privilege> children) {54         this.children = children;55     }56     57 }
Privilege.java

  2.Privilege.hbm.xml:

  
 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC  3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5  6 <hibernate-mapping package="cn.clear.oa.domain"> 7     <class name="Privilege" table="oa_privilege"> 8         <id name="id"> 9             <generator class="native" />10         </id>11         <property name="name" />12         <property name="url" />13         <!-- roles属性,本类与Role的多对多 -->14         <set name="roles" table="oa_privilege_role">15             <key column="privilegeId"></key>16             <many-to-many class="Role" column="roleId"></many-to-many>17         </set> 18         <!-- parent属性,本类与Privilege(上级)的多对一 -->19         <many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>20         <!-- children属性,本类与Privilege(下级级)的一对多 -->21         <set name="children" cascade="delete" order-by="id ASC">22             <key column="parentId"></key>23             <one-to-many class="Privilege"/>24         </set>25     </class>26 </hibernate-mapping>
Privilege.hbm.xml

  3.在Role.java中加入和权限的关联属性:

  private Set<Privilege> privileges = new HashSet<Privilege>();

  //get与set方法

  public Set<Privilege> getPrivileges() {

    return privileges;

  }

  public void setPrivileges(Set<Privilege> privileges) {

    this.privileges = privileges;

  }

  4.在Role.hbm.xml中加入和权限的关联关系属性:

  <!-- privileges属性,本类与Privilege的多对多 -->

  <set name="privileges" table="oa_privilege_role">

    <key column="roleId"></key>

    <many-to-many class="Privilege" column="privilegeId"></many-to-many>

  </set>

  5.将Privilege.hbm.xml加入hibernate.cfg.xml中:

  <mapping resource="cn/clear/oa/domain/Privilege.hbm.xml" />

  6.测试建表。

OA项目15:权限管理实体设计及映射