【hibernate实例】项一对多增加查找

来源:互联网 发布:linux下测试网速 编辑:程序博客网 时间:2024/05/21 05:24

创建部门表department


创建雇员表employee


新建包

新建持久化类

Department.java

  1. package www.hbsi.net.one2many;  
  2.   
  3.   
  4. import java.util.Set;  
  5.   
  6.   
  7. import www.hbsi.net.many2one.Employee;  
  8.   
  9.   
  10. public class Department {  
  11.   
  12.   
  13.     private int id;  
  14.     private String name;  
  15.     private Set<Employee> emps;  
  16.   
  17.   
  18.     public int getId() {  
  19.         return id;  
  20.     }  
  21.   
  22.   
  23.     public void setId(int id) {  
  24.         this.id = id;  
  25.     }  
  26.   
  27.   
  28.     public String getName() {  
  29.         return name;  
  30.     }  
  31.   
  32.   
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.   
  37.   
  38.     public Set<Employee> getEmps() {  
  39.         return emps;  
  40.     }  
  41.   
  42.   
  43.     public void setEmps(Set<Employee> emps) {  
  44.         this.emps = emps;  
  45.     }  
  46.   
  47.   
  48. }  

Employee.java

  1. package www.hbsi.net.one2many;  
  2.   
  3.   
  4. public class Employee {  
  5.     private int id;  
  6.     private String username;  
  7.   
  8.   
  9.     public int getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.   
  14.     public void setId(int id) {  
  15.         this.id = id;  
  16.     }  
  17.   
  18.   
  19.     public String getUsername() {  
  20.         return username;  
  21.     }  
  22.   
  23.   
  24.     public void setUsername(String username) {  
  25.         this.username = username;  
  26.     }  
  27.   
  28.   
  29. }  


新建映射表

Department.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="www.hbsi.net.one2many">  
  6.    <class name="Department" table="department">  
  7.       <id name="id" column="id">  
  8.         <generator class="native"/>  
  9.       </id>  
  10.       <property name="name" column="name" type="string"/>  
  11.        
  12.       <set name="emps" table="employee">  
  13.          <key column="dept_id"/>  
  14.          <one-to-many class="Employee"/>  
  15.       </set>  
  16.      
  17.    </class>  
  18. </hibernate-mapping>  


Employee.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5.   
  6.   
  7. <hibernate-mapping package="www.hbsi.net.one2many">  
  8.    <class name="Employee" table="employee">  
  9.       <id name="id" column="id">  
  10.         <generator class="native"/>  
  11.       </id>  
  12.       <property name="username" column="username" type="string"/>  
  13.    </class>  
  14. </hibernate-mapping>  


修改Hibernate.cfg.xml文件的mapping
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <!-- Generated by MyEclipse Hibernate Tools.                   -->  
  7. <hibernate-configuration>  
  8.   
  9.     <session-factory>  
  10.         <property name="dialect">  
  11.             org.hibernate.dialect.MySQLDialect  
  12.         </property>  
  13.         <property name="connection.url">  
  14.             jdbc:mysql://localhost:3306/hibernate  
  15.         </property>  
  16.         <property name="connection.username">root</property>  
  17.         <property name="connection.password">123456</property>  
  18.         <property name="connection.driver_class">  
  19.             com.mysql.jdbc.Driver  
  20.         </property>  
  21.         <property name="show_sql">true</property>  
  22.         <property name="hbm2ddl.auto">update</property>  
  23.           
  24.         <mapping resource="www/hbsi/net/one2many/Department.hbm.xml" />  
  25.         <mapping resource="www/hbsi/net/one2many/Employee.hbm.xml" />  
  26.   
  27.     </session-factory>  
  28.   
  29. </hibernate-configuration>  
增加

One2mant.java

  1. package www.hbsi.net.one2many;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. import org.hibernate.Session;  
  7. import org.junit.Test;  
  8.   
  9. import www.hbsi.net.util.HibernateSessionFactory;  
  10.   
  11. public class One2many {  
  12.   
  13.     @Test  
  14.     public void add() {  
  15.         Session session = HibernateSessionFactory.getSession();  
  16.         session.beginTransaction();  
  17.   
  18.         Department dept = new Department();  
  19.         dept.setName("数媒系");  
  20.   
  21.         Employee emp1 = new Employee();  
  22.         emp1.setUsername("雇员1");  
  23.   
  24.         Employee emp2 = new Employee();  
  25.         emp2.setUsername("雇员2");  
  26.   
  27.         Set<Employee> emps = new HashSet<Employee>();  
  28.         emps.add(emp1);  
  29.         emps.add(emp2);  
  30.   
  31.         //把部员和部门建立了联系,把雇员设上了id,外键,产生update语句  
  32.         dept.setEmps(emps);  
  33.   
  34.         session.save(emp1);  
  35.         session.save(emp2);  
  36.         session.save(dept);  
  37.   
  38.         session.getTransaction().commit();  
  39.         HibernateSessionFactory.closeSession();  
  40.     }  
  41. }  





先插入部门表

  1. package www.hbsi.net.one2many;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. import org.hibernate.Session;  
  7. import org.junit.Test;  
  8.   
  9. import www.hbsi.net.util.HibernateSessionFactory;  
  10.   
  11. public class One2many {  
  12.   
  13.     @Test  
  14.     public void add() {  
  15.         Session session = HibernateSessionFactory.getSession();  
  16.         session.beginTransaction();  
  17.   
  18.         Department dept = new Department();  
  19.         dept.setName("数媒系2");  
  20.   
  21.         Employee emp1 = new Employee();  
  22.         emp1.setUsername("雇员3");  
  23.   
  24.         Employee emp2 = new Employee();  
  25.         emp2.setUsername("雇员4");  
  26.   
  27.         Set<Employee> emps = new HashSet<Employee>();  
  28.         emps.add(emp1);  
  29.         emps.add(emp2);  
  30.   
  31.         //把部员和部门建立了联系,把雇员设上了id,外键,产生update语句  
  32.         dept.setEmps(emps);  
  33.   
  34.         session.save(dept);  
  35.         session.save(emp1);  
  36.         session.save(emp2);  
  37.           
  38.   
  39.         session.getTransaction().commit();  
  40.         HibernateSessionFactory.closeSession();  
  41.     }  
  42. }  

通过级联增加增加雇员

修改Department.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="www.hbsi.net.one2many">  
  6.    <class name="Department" table="department">  
  7.       <id name="id" column="id">  
  8.         <generator class="native"/>  
  9.       </id>  
  10.       <property name="name" column="name" type="string"/>  
  11.        
  12.       <set name="emps" table="employee" cascade="save-update">  
  13.          <key column="dept_id"/>  
  14.          <one-to-many class="Employee"/>  
  15.       </set>  
  16.      
  17.    </class>  
  18. </hibernate-mapping>  

One2many.java

  1. package www.hbsi.net.one2many;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. import org.hibernate.Session;  
  7. import org.junit.Test;  
  8.   
  9. import www.hbsi.net.util.HibernateSessionFactory;  
  10.   
  11. public class One2many {  
  12.   
  13.     @Test  
  14.     public void add() {  
  15.         Session session = HibernateSessionFactory.getSession();  
  16.         session.beginTransaction();  
  17.   
  18.         Department dept = new Department();  
  19.         dept.setName("数媒系4");  
  20.   
  21.         Employee emp1 = new Employee();  
  22.         emp1.setUsername("雇员7");  
  23.   
  24.         Employee emp2 = new Employee();  
  25.         emp2.setUsername("雇员8");  
  26.   
  27.         Set<Employee> emps = new HashSet<Employee>();  
  28.         emps.add(emp1);  
  29.         emps.add(emp2);  
  30.   
  31.         //把部员和部门建立了联系,把雇员设上了id,外键,产生update语句  
  32.         dept.setEmps(emps);  
  33.         session.save(dept);  
  34.           
  35.   
  36.         session.getTransaction().commit();  
  37.         HibernateSessionFactory.closeSession();  
  38.     }  
  39. }  





查询:

One2many.java

  1. package www.hbsi.net.one2many;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. import org.hibernate.Session;  
  7. import org.junit.Test;  
  8.   
  9. import www.hbsi.net.util.HibernateSessionFactory;  
  10.   
  11. public class One2many {  
  12.   
  13.     @Test  
  14.     public void add() {  
  15.         Session session = HibernateSessionFactory.getSession();  
  16.         session.beginTransaction();  
  17.   
  18.         Department dept = new Department();  
  19.         dept.setName("数媒系4");  
  20.   
  21.         Employee emp1 = new Employee();  
  22.         emp1.setUsername("雇员7");  
  23.   
  24.         Employee emp2 = new Employee();  
  25.         emp2.setUsername("雇员8");  
  26.   
  27.         Set<Employee> emps = new HashSet<Employee>();  
  28.         emps.add(emp1);  
  29.         emps.add(emp2);  
  30.   
  31.         //把部员和部门建立了联系,把雇员设上了id,外键,产生update语句  
  32.         dept.setEmps(emps);  
  33.         session.save(dept);  
  34.           
  35.   
  36.         session.getTransaction().commit();  
  37.         HibernateSessionFactory.closeSession();  
  38.     }  
  39.     @Test  
  40.     public void find(){ //通过部门id,查找该部门的所有员工  
  41.           
  42.         Session session = HibernateSessionFactory.getSession();  
  43.         session.beginTransaction();  
  44.           
  45.         Department dept = (Department) session.get(Department.class,7);  
  46.           
  47.         Set<Employee> emps = dept.getEmps();  
  48.         System.out.println(emps.size());  
  49.           
  50.         session.getTransaction().commit();  
  51.         HibernateSessionFactory.closeSession();  
  52.     }  
  53. }  



原创粉丝点击