OA项目8:表映射关系及跟对象之间的关系处理

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

一 之前我们写了两个功能,这两个功能之间没有什么关联关系。下面我们做的用户管理功能将和之前的两个功能有相应的关联关系,所以要先匹配之间的关联关系,然后才能够进行代码的编写,下图就是三个功能类之间的模型图,这有益于外面分析功能间的关系和编写修改功能代码:

 

二 将上面三个实体类全部写出来,具体如下:

 1 package cn.clear.oa.domain;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class User {
 7     private Long id;
 8     private String name;
 9     private String loginName;
10     private String gender;
11     private String phoneNumber;
12     private String email;
13     private String password;
14     private String description;
15     private Department department;
16     private Set<Role> roles = new HashSet<Role>();
17     public Set<Role> getRoles() {
18         return roles;
19     }
20     public void setRoles(Set<Role> roles) {
21         this.roles = roles;
22     }
23     public Long getId() {
24         return id;
25     }
26     public void setId(Long id) {
27         this.id = id;
28     }
29     public String getName() {
30         return name;
31     }
32     public void setName(String name) {
33         this.name = name;
34     }
35     public String getLoginName() {
36         return loginName;
37     }
38     public void setLoginName(String loginName) {
39         this.loginName = loginName;
40     }
41     public String getGender() {
42         return gender;
43     }
44     public void setGender(String gender) {
45         this.gender = gender;
46     }
47     public String getPhoneNumber() {
48         return phoneNumber;
49     }
50     public void setPhoneNumber(String phoneNumber) {
51         this.phoneNumber = phoneNumber;
52     }
53     public String getEmail() {
54         return email;
55     }
56     public void setEmail(String email) {
57         this.email = email;
58     }
59     public String getPassword() {
60         return password;
61     }
62     public void setPassword(String password) {
63         this.password = password;
64     }
65     public String getDescription() {
66         return description;
67     }
68     public void setDescription(String description) {
69         this.description = description;
70     }
71     public Department getDepartment() {
72         return department;
73     }
74     public void setDepartment(Department department) {
75         this.department = department;
76     }
77     
78     
79 }
User.java
 1 package cn.clear.oa.domain;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class Role {
 7 
 8     private Long id;
 9     private String name;
10     private String description;
11     private Set<User> users = new HashSet<User>();
12     public Long getId() {
13         return id;
14     }
15     public void setId(Long id) {
16         this.id = id;
17     }
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public String getDescription() {
25         return description;
26     }
27     public void setDescription(String description) {
28         this.description = description;
29     }
30     public Set<User> getUsers() {
31         return users;
32     }
33     public void setUsers(Set<User> users) {
34         this.users = users;
35     }
36     
37     
38 }
Role.java
 1 package cn.clear.oa.domain;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class Department {
 7 
 8     private Long id;
 9     private String name;
10     private String description;
11     private Department parent;
12     private Set<User> users = new HashSet<User>();
13     private Set<Department> children = new HashSet<Department>();
14     
15     public Department getParent() {
16         return parent;
17     }
18     public void setParent(Department parent) {
19         this.parent = parent;
20     }
21     public Set<User> getUsers() {
22         return users;
23     }
24     public void setUsers(Set<User> users) {
25         this.users = users;
26     }
27     public Set<Department> getChildren() {
28         return children;
29     }
30     public void setChildren(Set<Department> children) {
31         this.children = children;
32     }
33     public Long getId() {
34         return id;
35     }
36     public void setId(Long id) {
37         this.id = id;
38     }
39     public String getName() {
40         return name;
41     }
42     public void setName(String name) {
43         this.name = name;
44     }
45     public String getDescription() {
46         return description;
47     }
48     public void setDescription(String description) {
49         this.description = description;
50     }
51     
52     
53 }
Department.java

三 分析三个类的关联关系,在映射文件中配置相应的属性,我将映射文件内容表于下面:

 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="User" table="oa_user">
 8         <id name="id"><generator class="native"/></id>
 9         <property name="name"/>
10         <property name="loginName"/>
11         <property name="gender"/>
12         <property name="phoneNumber"/>
13         <property name="email"/>
14         <property name="password"/>
15         <property name="description"/>
16         <!-- department属性,本类与Department的多对1关系 -->
17         <many-to-one name="department" class="Department" column="departmentId"></many-to-one>
18         <!-- roles属性,本类与Role的多对多关系 -->
19         <set name="roles" table="oa_user_role">
20             <key column="userId"></key>
21             <many-to-many class="Role" column="roleId"></many-to-many>
22         </set>
23     </class>
24 </hibernate-mapping>
User.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="Role" table="oa_role">
 8         <id name="id">
 9             <generator class="native" />
10         </id>
11         <property name="name" />
12         <property name="description" />
13         <!-- users属性,本类与User的多对多 -->
14         <set name="users" table="oa_user_role">
15             <key column="roleId"></key>
16             <many-to-many class="User" column="userId"></many-to-many>
17         </set> 
18     </class>
19 </hibernate-mapping>
Role.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="Department" table="oa_department">
 8         <id name="id"><generator class="native"/></id>
 9         <property name="name"/>
10         <property name="description"/>
11         <!-- users属性,本类与User的1对多 -->
12         <set name="users">
13             <key column="departmentId"></key>
14             <one-to-many class="User"/>
15         </set>
16         <!-- parent属性,本类与(上级)Department的多对1 -->
17         <many-to-one name="parent" class="Department" column="parentId"></many-to-one>
18         <!-- children属性,本类与(下级)Department的1对多 -->
19         <set name="children">
20             <key column="parentId"></key>
21             <one-to-many class="Department"/>
22         </set>
23     </class>
24 </hibernate-mapping>
Department.hbm.xml

  总结出映射文件的写法,下面的内容就来概括:

  例:<!-- users属性,本类与User类的一对多 -->

  格式:a属性,本类与b的c。

  解释:a为属性名,b为关联的对象名,c为对应的关系。

  模板(以后在填写多表映射时可以以以此为模板):

    1)多对一:

      <many-to-one name="a" class="b" column="a+Id"></many-to-one>

    2)一对多:

      <set name="a">

        <key column="对应多对一中的column"></key>

        <one-to-many class="b"/>

      </set>

    3)多对多:

      <set name="a" table="oa_本类类名(小写)_b类名(小写)">

        <key column="本类类名小写+Id"></key>

        <many-to-many class="b" column="b类名+Id"></many-to-many>

      </set>

四 以上做完后启动之前的测试类TestSpring.java中的测试SessionFactory的方法进行自动建表,如不报错,去数据库看看是否正确。

转载于:https://www.cnblogs.com/clear5/p/4043233.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OA系统版本号A8-7.1是一种较新的OA系统版本。OA系统即办公自动化系统,是一种集成办公软件和相关功能的系统,旨在优化企业内部的办公流程和信息管理。 A8-7.1版本的OA系统可能具有以下特点和功能: 1. 用户界面升级:这个版本的OA系统可能会进行界面升级,使得用户界面更加美观、直观,使用起来更加方便快捷。 2. 手机端应用:随着移动办公的普及,A8-7.1版本的OA系统可能会新增手机端应用,方便员工随时随地进行办公操作。 3. 流程管理:OA系统通常是以流程为核心的,A8-7.1版本可能会提供更加强大和灵活的流程管理功能,包括审批流程、报销流程等。 4. 文件管理:OA系统一般也提供文件管理功能,A8-7.1版本可能会加强文件管理的安全性和便捷性,支持多种文件格式的上传、下载、共享和版本管理。 5. 计划管理:办公自动化系统通常也包含计划管理功能,A8-7.1版本可能会提供日程安排、任务分配等功能,帮助企业员工更好地组织、管理和跟踪工作中的任务和计划。 6. 数据分析:OA系统通常也具备一定的数据分析功能,A8-7.1版本可能会加强数据分析的能力,提供更加丰富的数据报和可视化分析工具,帮助企业更好地理解和利用数据。 7. 安全性升级:A8-7.1版本的OA系统可能会对系统安全性进行升级,采用更加严格的权限管理和数据加密技术,保障企业信息的安全性。 总之,A8-7.1版本的OA系统可能会在用户界面、移动办公、流程管理、文件管理、计划管理、数据分析和安全性方面进行优化和升级,提供更加强大、高效、安全的办公自动化工具。 ### 回答2: OA系统版本号为A8-7.1,是指该OA系统的具体版本和升级级别。 OA系统是指办公自动化系统,它是利用计算机和通信技术来管理、协调和处理办公事务的一种信息化管理系统。OA系统可以帮助企业提高工作效率、降低成本、提升管理水平。 A8-7.1是该OA系统的具体版本号,其中A8示该系统的主要版本,7示该主要版本的次要版本,即第7个次要版本,1示该次要版本的修订版本,即第1个修订版本。版本号的更新通常意味着系统在功能、性能、安全性等方面进行了改进和优化,用户可以通过版本升级来享受到系统的新功能和改进。 针对A8-7.1版本的OA系统,具体的功能和特点可能需要根据具体的系统情况来进行分析。一般来说,OA系统包含了人事管理、办公流程管理、文件管理、协同办公、会议管理、知识管理等多个模块,用户可以通过电脑、手机等终端进行操作。同时,OA系统通常还具备权限管理、审批流程、报生成、数据分析等功能,以满足不同用户的不同需求。 总之,OA系统版本为A8-7.1是一种办公自动化系统的具体版本号,用户可以根据具体情况进行系统升级,以享受到更好的功能和性能。 ### 回答3: OA系统版本A8-7.1是一种办公自动化系统的软件版本。OA系统是指使用计算机和网络技术来管理和协调办公室工作的系统。A8-7.1是该系统的一个具体版本。 OA系统的功能主要包括文件管理、协同办公、流程管理、考勤管理和公告通知等。文件管理功能是指用户可以上传、下载和共享文件,实现文件的统一管理和快速检索。协同办公功能可以使不同部门的员工进行实时沟通和协作,提高工作效率。流程管理功能可以帮助企业建立各种业务流程,将工作按照流程化和标准化的方式进行。考勤管理功能可以记录员工的出勤情况和工作时长,为企业提供有效的考勤管理手段。公告通知功能可以方便地向员工发布通知和公告,提高信息的传递效率。 A8-7.1版本相对于之前的版本可能包括了一些新的功能和改进,例如界面设计更加美观简洁、操作更加便捷,性能更加稳定可靠等。同时,A8-7.1版本可能也修复了之前版本中存在的一些bug和问题,提高了系统的稳定性和用户体验。 综上所述,OA系统版本A8-7.1是一款广泛应用于办公环境中的软件系统,具有丰富的功能和稳定的性能,可帮助企业提高工作效率和管理水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值