Department部门和Employee员工是一对多的关系,再多的一端会有一个外键来维护关系,即多的一端是关系的维护端,少的一端为关系的被维护端。
部门实体Department.java:
/**
* 部门和员工的关系为一对多,多的一端为关系的维护端,
* 关系的维护端来负责外键的更新,少的一端无权更新外键字段。
* @author Liao
*/
public class Department {
/* 部门Id */
private Integer id;
/* 部门名称 */
private String name;
/* 部门和员工的关系(一对多) */
private Set employees;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getEmployees() {
return employees;
}
public void setEmployees(Set employees) {
this.employees = employees;
}
}
员工实体Employee.java:
public class Employee {
/* 员工ID */
private Integer id;
/* 员工名称 */
private String name;
/* 员工和部门的关系(多对一) */
private Department department;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
}
Department.hbm.xml:
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
Employee.hbm.xml:
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
注:Employee为多的一端,作为关系的维护端,通过一个外键即dept_id来维护。
测试类:
public class One2ManyTest {
public static void main(String[] args) {
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
/*创建部门并设置属性*/
Department department = new Department();
department.setName("开发部");
session.save(department);
/*创建员工并设置属性*/
Employee employee = new Employee();
employee.setName("习近平");
employee.setDepartment(department);
session.save(employee);
transaction.commit();
}
}
注:我这里只是随便测试了一下,并未关闭Session和Transaction。