首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate入门(6):一对多

2012-10-25 
hibernate入门(六):一对多2.一对多关系映射:上面提到的多个员工对应于一个部门,是多对一的关系,如果一个部

hibernate入门(六):一对多
2.一对多关系映射:

上面提到的多个员工对应于一个部门,是多对一的关系,如果一个部门有多个员工,则用“一对多”的关系来表示这个关系,现接上例继续,以实现一对多的关系映射。具体操作步骤如下:

>>步骤一,在Department.java中增加如下内容:private Set<Employee> emps; 及相应的get/set方法。

>>步骤二,修改Department的实体配置文件。在class元素下增加如下内容:

<set name="emps">

           <key column="depart_id"></key>

           <one-to-many name="code">package com.asm.hibernate.test; public class OneToManyTest { public static void main(String[] args) { add(); query(1); } static Department query(int departId) { Session s = null; try { s = HibernateUtil.getSession(); Department depart = (Department) s.get(Department.class, departId); System.out.println("employee size:" + depart.getEmps().size()); return depart; } finally { if (s != null) s.close(); } } static void add() { Session s = null; Transaction tx = null; try { Department depart = new Department(); depart.setName("departName"); Employee emp1 = new Employee(); emp1.setName("empName1"); emp1.setDepart(depart); Employee emp2 = new Employee(); emp2.setName("empName2"); emp2.setDepart(depart); // Set<Employee> emps = new HashSet<Employee>(); // emps.add(emp1); // emps.add(emp2); // depart.setEmps(emps); s = HibernateUtil.getSession(); tx = s.beginTransaction(); s.save(depart); s.save(emp1); s.save(emp2); tx.commit(); } finally { if (s != null) s.close(); } } }
说明:此类比较简单,增加两个员工信息,然后查出,同样可以体现出这种查询的方便,可以查看控制台,发现实质也是进行了两次查询操作。特别注意,上面注释掉的内容,思考怎样实现映射?如果加上注释掉的内容将会在控制台增加两条更新操作(注意更新的内容)。实际上注释掉的内容和已有内容建立了两种关联:“多对一”、“一对多”。

热点排行