【hibernate实例】双向多对一客户与订单增加查找修改

来源:互联网 发布:linux下测试网速 编辑:程序博客网 时间:2024/06/11 14:29
新建持久化类
Order.java
  1. package www.hbsi.net.one2manyboth;  
  2.   
  3. public class Order {  
  4.     private int id;  
  5.     private String no;  
  6.     private Customer customer;  
  7.     public int getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(int id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getNo() {  
  14.         return no;  
  15.     }  
  16.     public void setNo(String no) {  
  17.         this.no = no;  
  18.     }  
  19.     public Customer getCustomer() {  
  20.         return customer;  
  21.     }  
  22.     public void setCustomer(Customer customer) {  
  23.         this.customer = customer;  
  24.     }  
  25.   
  26. }  


Customer.java
  1. package www.hbsi.net.one2manyboth;  
  2.   
  3. import java.util.Set;  
  4.   
  5. public class Customer {  
  6.     private int id;  
  7.     private String name;  
  8.     private Set<Order> orders;  
  9.     public int getId() {  
  10.         return id;  
  11.     }  
  12.     public void setId(int id) {  
  13.         this.id = id;  
  14.     }  
  15.     public String getName() {  
  16.         return name;  
  17.     }  
  18.     public void setName(String name) {  
  19.         this.name = name;  
  20.     }  
  21.     public Set<Order> getOrders() {  
  22.         return orders;  
  23.     }  
  24.     public void setOrders(Set<Order> orders) {  
  25.         this.orders = orders;  
  26.     }  
  27.   
  28. }  
新建持久化类配置文件
Order.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.one2manyboth">  
  8.    <class name="Order" table="orders">  
  9.       <id name="id" column="id">  
  10.         <generator class="native"/>  
  11.       </id>  
  12.       <property name="no" column="no" type="string"/>  
  13.       <many-to-one name="customer" column="customer_id" cascade="save-update"/>  
  14.        
  15.      
  16.    </class>  
  17.   
  18.   
  19. </hibernate-mapping>  

Customer.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.one2manyboth">  
  8.    <class name="Customer" table="customer">  
  9.       <id name="id" column="id">  
  10.         <generator class="native"/>  
  11.       </id>  
  12.       <property name="name" column="name" type="string"/>  
  13.        
  14.      <set name="orders" inverse="true" cascade="save-update">  
  15.           <key column="customer_id"/>  
  16.           <one-to-many class="Order"/>  
  17.      </set>  
  18.      
  19.    </class>  
  20.   
  21.   
  22. </hibernate-mapping>  

更改hibernate配置文件

hibernate.cfg.xml

创建测试类

App.java

  1. package www.hbsi.net.one2manyboth;  
  2.   
  3. import java.util.Set;  
  4.   
  5. import org.hibernate.Session;  
  6. import org.junit.Test;  
  7.   
  8. import www.hbsi.net.util.HibernateSessionFactory;  
  9.   
  10. public class App {  
  11.     @Test  
  12.     public void add(){  
  13.         Session session = HibernateSessionFactory.getSession();  
  14.         session.beginTransaction();  
  15.           
  16.         Customer customer = new Customer();  
  17.         customer.setName("客户2");  
  18.           
  19.         Order order = new Order();  
  20.         order.setNo("1234");  
  21.         order.setCustomer(customer);  
  22.           
  23.         Order order1 = new Order();  
  24.         order1.setNo("213");  
  25.         order1.setCustomer(customer);  
  26.           
  27.         //order维护保存order  
  28.         session.save(order);  
  29.         session.save(order1);  
  30.           
  31.         session.getTransaction().commit();  
  32.         HibernateSessionFactory.closeSession();  
  33.     }  
  34.       
  35.     //查询1号客户的所有订单  
  36.     @Test  
  37.     public void find(){  
  38.           
  39.         Session session = HibernateSessionFactory.getSession();  
  40.         session.beginTransaction();  
  41.           
  42.         Customer cust = (Customer) session.get(Customer.class,1);  
  43.         Set<Order> orders = cust.getOrders();  
  44.         for(Order o:orders){  
  45.             System.out.println(o.getNo());  
  46.         }  
  47.           
  48.         session.getTransaction().commit();  
  49.         HibernateSessionFactory.closeSession();  
  50.           
  51.     }  
  52.       
  53.     //改变订单的所有者      將4号订单给1号客户  
  54.     @Test  
  55.     public void change(){  
  56.       
  57.         Session session = HibernateSessionFactory.getSession();  
  58.         session.beginTransaction();  
  59.           
  60.         //查找4号订单  
  61.         Order o4 = (Order) session.get(Order.class,4);  
  62.           
  63.         //查找1号客户  
  64.         Customer c1 = (Customer) session.get(Customer.class,1);  
  65.         //建立关联关系  
  66.         o4.setCustomer(c1);  
  67.         c1.getOrders().add(o4);  
  68.           
  69.           
  70.         session.getTransaction().commit();  
  71.         HibernateSessionFactory.closeSession();  
  72.     }  
  73.       
  74.   
  75. }  

增加:




查找:


修改:



原创粉丝点击