hibernate一对多的实现

发布时间:2016-12-8 4:15:15 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"hibernate一对多的实现",主要涉及到hibernate一对多的实现方面的内容,对于hibernate一对多的实现感兴趣的同学可以参考一下。

首先我想说,不管是多对一还是一对多,他们的共同点就是两张表有联系。实现的实质就是通过找共同属性的字段(可以不同名字,但是在关联时候,类型是一致的)。 如果是员工表和部门表的话,那么我们可以通过部门编号来实现。   下面我写一个查找一个部门有多少人实例来说明1对多的实现方式。 1.      部门对象映射类 package com.fish.testdao;   import java.util.Set;   public class Department{ private Integer id; private String name; private Set<Employee> employee;//利用这个我们可以将一个部门的所有员工放到这个集合,到时候我们只要遍历这个集合我们就知道一个部门都有谁了。   public Set<Employee> getEmployee() {     return employee; } public void setEmployee(Set<Employee> employee) {     this.employee = employee; } 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; }   }   2.      员工对象映射类   package com.fish.testdao;   public class Employee { 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; }   } 3.      部门xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/HibernateMapping DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   <hibernate-mapping>     <class name="com.fish.testdao.Department">        <id name="id" type="integer">            <generator class="increment"></generator>        </id>        <property name="name"></property>        <set name="employee">            <key column="department"></key>            <one-to-many class="com.fish.testdao.Employee"/>        </set>     </class> </hibernate-mapping>     *注<set name="employee">说明这个集合要封装的是部门类中的set属性叫employee和类的属性是一致的            <keycolumn="department"></key> //关联的是员工表的这个属性            <one-to-manyclass="com.fish.testdao.Employee" />  //操作的是员工表        </set>   4.       员工xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/HibernateMapping DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   <hibernate-mapping>     <class name="com.fish.testdao.Employee" >        <id name="id" column="id"type="integer">            <generator class="increment"></generator>        </id>        <property name="name" ></property>        <many-to-one name="department"   ></many-to-one>     </class> </hibernate-mapping>     我们写一个测试类 package com.fish.domain;   import java.util.List;   import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;   import com.fish.testdao.Department; import com.fish.testdao.Employee;   public class Test2 {     //写一个得到session的模板     public static Session getMySession() {        Configuration configuration = new Configuration();        configuration.configure("hibernate.cfg.xml");        SessionFactory factory = configuration.buildSessionFactory();        Session session = factory.openSession();        return session;     } //这是一个对部门有多少员工的查找     public static void query() {        String hql = "fromDepartment";        Session session = getMySession();        Query query = session.createQuery(hql);        List<Department> list = query.list();        for (Department i : list) {             System.out.println(i.getName()+"有");               for(Employee j:i.getEmployee()){               System.out.print( j.getName());               }               System.out.println("");               System.out.println("");        }        }     public static void main(String[] args) {        query(); } }   原帖地址 : http://www.2cto.com/kf/201308/234799.html

上一篇:html meta标签汇总
下一篇:程序员人生之路(强烈推荐,分析的透彻!)

相关文章

相关评论