设为首页 加入收藏

TOP

Hibernate一对多和多对一双向关联映射
2014-11-23 22:22:19 来源: 作者: 【 】 浏览:11
Tags:Hibernate 双向 关联 映射

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。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++函数与Java函数对比初识 下一篇Unity3D中实现动态加载Resources..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: