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

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


创建部门表department


创建雇员表employee


新建持久化类

Department.java

  1. package www.hbsi.net.many2one;  
  2.   
  3. public class Department  {  
  4.     private Integer id;  
  5.     private String name;  
  6.   
  7.     public Integer getId() {  
  8.         return this.id;  
  9.     }  
  10.   
  11.     public void setId(Integer id) {  
  12.         this.id = id;  
  13.     }  
  14.   
  15.     public String getName() {  
  16.         return this.name;  
  17.     }  
  18.   
  19.     public void setName(String name) {  
  20.         this.name = name;  
  21.     }  
  22. }  

Employee.java

  1. package www.hbsi.net.many2one;  
  2. public class Employee {  
  3.     private Integer id;  
  4.     private Department department;//反应了对象之间的关系  
  5.     private String username;  
  6.       
  7.     public Integer getId() {  
  8.         return this.id;  
  9.     }  
  10.   
  11.     public void setId(Integer id) {  
  12.         this.id = id;  
  13.     }  
  14.   
  15.     public Department getDepartment() {  
  16.         return this.department;  
  17.     }  
  18.   
  19.     public void setDepartment(Department department) {  
  20.         this.department = department;  
  21.     }  
  22.   
  23.     public String getUsername() {  
  24.         return this.username;  
  25.     }  
  26.   
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.   
  31. }  

新建映射文件

Department.hbm.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4.   
  5. <hibernate-mapping package="www.hbsi.net.many2one">  
  6.     <class name="Department" table="department" catalog="hibernate">  
  7.         <id name="id" type="java.lang.Integer">  
  8.             <column name="id" />  
  9.             <generator class="native" />  
  10.         </id>  
  11.         <property name="name" column ="name" type="string" />  
  12.     </class>  
  13. </hibernate-mapping>  


Employee.hbm.xml

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

更改hibernate映射问价的mapping属性

hibernate.cfg.xml;

  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.         <mapping resource="www/hbsi/net/many2one/Department.hbm.xml" />  
  24.         <mapping resource="www/hbsi/net/many2one/Employee.hbm.xml" />  
  25.   
  26.     </session-factory>  
  27.   
  28. </hibernate-configuration>  

创建测试类

Many2one.java

  1. package www.hbsi.net.many2one;  
  2.   
  3. import javax.persistence.Temporal;  
  4.   
  5. import org.hibernate.Session;  
  6. import org.junit.Test;  
  7.   
  8. import www.hbsi.net.util.HibernateSessionFactory;  
  9.   
  10. public class Many2one {  
  11.     @Test  
  12.     public void add(){  
  13.         Session session = HibernateSessionFactory.getSession();  
  14.         session.beginTransaction();  
  15.           
  16.         Department department = new Department();  
  17.         department.setName("软件系");  
  18.           
  19.         Employee employee1 = new Employee();  
  20.         employee1.setUsername("Nacy");  
  21.         employee1.setDepartment(department);  
  22.           
  23.         Employee employee2 = new Employee();  
  24.         employee2.setUsername("Tom");  
  25.         employee2.setDepartment(department);  
  26.           
  27.         session .save(department);  
  28.         session .save(employee1);  
  29.         session .save(employee2);  
  30.         session.getTransaction().commit();  
  31.         HibernateSessionFactory.closeSession();  
  32.     }  
  33. }  

控制台输出:

department表

employee表


查找:

Many2one.java

  1. /** 
  2.  * 先保存部门在保存雇员 
  3.  * 一般推荐这种方法 
  4.  */  
  5. package www.hbsi.net.many2one;  
  6.   
  7. import org.hibernate.Session;  
  8. import org.junit.Test;  
  9.   
  10. import www.hbsi.net.util.HibernateSessionFactory;  
  11.   
  12. public class Many2one {  
  13.     @Test  
  14.     public void add(){  
  15.         Session session = HibernateSessionFactory.getSession();  
  16.         session.beginTransaction();  
  17.           
  18.         Department department = new Department();  
  19.         department.setName("软件系");  
  20.           
  21.         Employee employee1 = new Employee();  
  22.         employee1.setUsername("Nacy");  
  23.         employee1.setDepartment(department);  
  24.           
  25.         Employee employee2 = new Employee();  
  26.         employee2.setUsername("Tom");  
  27.         employee2.setDepartment(department);  
  28.           
  29.         session .save(department);  
  30.         session .save(employee1);  
  31.         session .save(employee2);  
  32.         session.getTransaction().commit();  
  33.         HibernateSessionFactory.closeSession();  
  34.     }  
  35.       
  36.     /** 
  37.      * 通过雇员ID查找所属部门 
  38.      */  
  39.     @Test  
  40.     public void find() {  
  41.         Session session = HibernateSessionFactory.getSession();  
  42.         session.beginTransaction();  
  43.           
  44.         Employee employee = (Employee) session.get(Employee.class5);  
  45.         System.out.println(employee.getUsername()+"--"+employee.getDepartment().getName());  
  46.           
  47.         session.getTransaction().commit();  
  48.         HibernateSessionFactory.closeSession();  
  49.           
  50.     }  
  51. }