首页 > 代码库 > Hibernate级联关系OneToMany之 Annotation实现

Hibernate级联关系OneToMany之 Annotation实现

[java] view plaincopy
  1. package com.lwp.hibernate.Model;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import javax.persistence.CascadeType;  
  6. import javax.persistence.Column;    
  7. import javax.persistence.Entity;    
  8. import javax.persistence.FetchType;  
  9. import javax.persistence.GeneratedValue;    
  10. import javax.persistence.Id;    
  11. import javax.persistence.JoinColumn;  
  12. import javax.persistence.ManyToOne;  
  13. import javax.persistence.Table;  
  14.   
  15. @Entity    
  16. @Table(name="ORDERS")    
  17. public class Order implements Serializable{  
  18.   
  19.     private static final long serialVersionUID = 1L;  
  20.     public Order(){}  
  21.   
  22.     public Order(String orderNumber){  
  23.         this.orderNumber =orderNumber;  
  24.     }  
  25.     @Id    
  26.     @GeneratedValue    
  27.     @Column(name="ID")    
  28.     private Long id;  
  29.       
  30.     @Column(name="ORDER_NUMBER",length=15)    
  31.     private String orderNumber;  
  32.       
  33.     @ManyToOne(fetch = FetchType.EAGER,cascade=CascadeType.ALL)  
  34.     @JoinColumn(name="CUSTOMER_ID")  
  35.     private Customer customer;  
  36.   
  37.     public Long getId() {  
  38.         return id;  
  39.     }  
  40.   
  41.     public void setId(Long id) {  
  42.         this.id = id;  
  43.     }  
  44.   
  45.     public String getOrderNumber() {  
  46.         return orderNumber;  
  47.     }  
  48.   
  49.     public void setOrderNumber(String orderNumber) {  
  50.         this.orderNumber = orderNumber;  
  51.     }  
  52.   
  53.     public Customer getCustomer() {  
  54.         return customer;  
  55.     }  
  56.   
  57.     public void setCustomer(Customer customer) {  
  58.         this.customer = customer;  
  59.     }  
  60.       
  61.       
  62. }  

[java] view plaincopy
  1. package com.lwp.hibernate.Model;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.HashSet;  
  5. import java.util.Set;  
  6.   
  7. import javax.persistence.Column;    
  8. import javax.persistence.Entity;    
  9. import javax.persistence.GeneratedValue;    
  10. import javax.persistence.Id;    
  11. import javax.persistence.OneToMany;  
  12. import javax.persistence.Table;    
  13.   
  14. @Entity    
  15. @Table   
  16. public class Customer implements Serializable{  
  17.       
  18.     private static final long serialVersionUID = 1L;  
  19.   
  20.     public Customer(){}  
  21.     public Customer(String name,Set<Order> orders){  
  22.         this.name=name;  
  23.         this.orders = orders;  
  24.     }  
  25.   
  26.     @Id    
  27.     @GeneratedValue    
  28.     @Column(name="ID")    
  29.     private Long id;  
  30.       
  31.     @Column(name="NAME",length=15)    
  32.     private String name;  
  33.       
  34.     @OneToMany(mappedBy="customer")  
  35.     private Set<Order> orders = new HashSet<Order>();  
  36.   
  37.     public Set<Order> getOrders() {  
  38.         return orders;  
  39.     }  
  40.     public void setOrders(Set<Order> orders) {  
  41.         this.orders = orders;  
  42.     }  
  43.     public Long getId() {  
  44.         return id;  
  45.     }  
  46.   
  47.     public void setId(Long id) {  
  48.         this.id = id;  
  49.     }  
  50.   
  51.     public String getName() {  
  52.         return name;  
  53.     }  
  54.   
  55.     public void setName(String name) {  
  56.         this.name = name;  
  57.     }  
  58. }  

[java] view plaincopy
  1. import java.util.HashSet;  
  2. import java.util.Set;  
  3.   
  4. import org.hibernate.Session;  
  5. import org.hibernate.SessionFactory;  
  6. import org.hibernate.cfg.AnnotationConfiguration;  
  7. import org.hibernate.cfg.Configuration;  
  8. import org.hibernate.tool.hbm2ddl.SchemaExport;  
  9.   
  10. import com.lwp.hibernate.Model.Customer;  
  11. import com.lwp.hibernate.Model.Order;  
  12.   
  13. public class CustomerTest {  
  14.   
  15.     public static void main(String[] args) {  
  16.         new SchemaExport(new AnnotationConfiguration().configure("/hibernate.cfg.xml")).create(truefalse);  
  17.           
  18.         Set<Order> orders =  new HashSet<Order>();  
  19.         Order order1 = new Order("Tom_Order001");  
  20.         Order order2 = new Order("Tom_Order002");  
  21.         orders.add(order1);  
  22.         orders.add(order2);  
  23.         Customer customer = new Customer("Tom",orders);  
  24.         order1.setCustomer(customer);  
  25.         order2.setCustomer(customer);  
  26.           
  27.         //save(customer);  
  28.         save(order1);  
  29.         save(order2);  
  30.   
  31.           
  32.     }  
  33.   
  34.     public static void save(Object o){  
  35.         //Configuration cfg = new Configuration();//xx.hbm.xml形式下的new    
  36.         Configuration cfg = new AnnotationConfiguration(); //Annotation形式下的new   
  37.         SessionFactory sf = cfg.configure().buildSessionFactory();  
  38.         Session session = sf.openSession();  
  39.         session.beginTransaction();  
  40.         session.save(o);  
  41.         session.getTransaction().commit();  
  42.         session.close();  
  43.         sf.close();  
  44.     }  
  45. }  


注:这里不用save customer, save order时就会保存customer。因为mappedBy 相当于Inverse=value,既让Many一方来维护。

Hibernate级联关系OneToMany之 Annotation实现