首页 > 代码库 > 项目OA之实体类的设计

项目OA之实体类的设计

1.明天中秋啦,苦逼啊,自己一个人过啊,不过幸好有OA项目陪着也不孤单,继续做我的笔记,接着昨天的.

2.昨天笔记已经搭建好了SSH环境和SSH的整合,今天需要做的就是实体类的设计和分析,首先我们将资源结构分好建立一个config文件夹用来放置所有的配置文件,前文已经说过,注意需要放置在类路径下也就是直接在项目名右击建立sourcefolder,建立对应的jsp 存放页面,style存放样式,script存放脚本语言等等

3.根据项目的需求设计实体类,我这里是使用的starUml工具画的UML图,具体设计思路如下(实体设计很重要因为其中包括属性和各个表的之间的关联关系),我们是从系统管理做起的,其中包括用户管理,部门管理,岗位管理,具体设计如下图:


注意其中的关联关系很重要,因为等下在写hbm文件的时候,需要设置。


4.实体类设计好了以后,再根据图,写出domain对象代码如下,注意集合属性:

User

package com.icss.oa.domain;

import java.util.HashSet;
import java.util.Set;

public class User {
	
	private long id;
	private Department department;
	private Set<Role> roles =new HashSet<Role>();
	private String loginName;
	private String password;
	private String gender;
	private String phoneNumber;
	private String email;
	private String descrition;
	
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public Department getDepartment() {
		return department;
	}
	public void setDepartment(Department department) {
		this.department = department;
	}
	public Set<Role> getRoles() {
		return roles;
	}
	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getPhoneNumber() {
		return phoneNumber;
	}
	public void setPhoneNumber(String phoneNumber) {
		this.phoneNumber = phoneNumber;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getDescrition() {
		return descrition;
	}
	public void setDescrition(String descrition) {
		this.descrition = descrition;
	}
	
	

}
Department

package com.icss.oa.domain;

import java.util.HashSet;
import java.util.Set;

public class Department {
	
	 private long id;
	 private Set<User> users =new HashSet<User>();
	 private Department parent;
	 private Set<Department> children;
	 private String name;
	 private String description;
	 
	 
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	public Department getParent() {
		return parent;
	}
	public void setParent(Department parent) {
		this.parent = parent;
	}
	public Set<Department> getChildren() {
		return children;
	}
	public void setChildren(Set<Department> children) {
		this.children = children;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	 
	 

}
Role

package com.icss.oa.domain;

import java.util.HashSet;
import java.util.Set;

public class Role {
    
	private long id;
	private String name;
	private String description;
	private Set<User> users = new HashSet<User>();
	
	
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	
	
	
}

5.根据实体类生成hbm文件,注意关联关系

User.hbm,xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.icss.oa.domain">

    <class name="User" table="t_user">

        <id name="id" type="long">
            <column name="user_id" />
            <generator class="native" />
        </id>
        
        <property name="loginName" type="java.lang.String">
            <column name="user_name" />
        </property>
        
         <property name="password" type="string">
            <column name="user_password" />
        </property>
        
        <property name="gender" type="string">
            <column name="user_gender" />
        </property>
        
        <property name="phoneNumber" type="string">
            <column name="user_phoneNumber" />
        </property>
        
        <property name="email" type="string">
            <column name="user_email" />
        </property>
        
        <property name="descrition" type="string">
            <column name="user_descrition" />
        </property>
        
        
		<!-- department属性,本类与Department的多对一  -->
		<many-to-one name="department" column="departmentId" class="Department"></many-to-one>
		
		
		<!-- roles属性,本类与Role多对多 -->
		<set name="roles" table="t_user_role">
		 <key column="userId"></key>
		 <many-to-many class="Role" column="roleId"></many-to-many>
		</set>
		   
		

    </class>
</hibernate-mapping>

Department.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.icss.oa.domain">

    <class name="Department" table="t_department">

        <id name="id" type="long">
            <column name="department_id" />
            <generator class="native" />
        </id>
        
        <property name="name" type="java.lang.String">
            <column name="department_name" />
        </property>
        <!-- users属性,本类与User类的一对多 -->
        <set name="users">
          <key column="departmentId"></key>
          <one-to-many class="User"/>
        </set>
        
        <!-- children属性,本类下级的1对多 -->
        <set name="children">
          <key column="parentId"></key>
          <one-to-many class="Department"/>
        </set>
        <!-- parent属性,本类与上级的多对一 -->
         <many-to-one name="parent" class="Department" column="parentId"></many-to-one>
		
		

    </class>
</hibernate-mapping>
Role.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.icss.oa.domain">

    <class name="Role" table="t_role">

        <id name="id" type="long">
            <column name="role_id" />
            <generator class="native" />
        </id>
        
        <property name="name" type="java.lang.String">
            <column name="role_name" />
        </property>
        
         <property name="description" type="string">
            <column name="role_description" />
        </property>
		
		<!-- users属性,本类与User多对多 -->
		<set name="users" table="t_user_role">
		   <key column="roleId"></key>
		  <many-to-many class="User" column="userId"></many-to-many>
		</set>
		

    </class>
</hibernate-mapping>

6.测试,如果上面的编写没有错误地话,则在数据库中就会生成相应的表运行test文件夹中的SpringTest得到如下的结果:




7.明天做Action  service  dao 层的设计

项目OA之实体类的设计