Posted on 2009-06-20 19:08
胡娟 閱讀(2458)
評論(0) 編輯 收藏 所屬分類:
JAVA
關系映射
package com.hujuan.bean;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="orders")
public class Order {
private String id;
private Float amount;
private Set<OrderItem> items = new HashSet<OrderItem>();
@Id @Column(length=10)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(nullable=false)
public Float getAmount() {
return amount;
}
public void setAmount(Float amount) {
this.amount = amount;
}
//級聯操作
@OneToMany(cascade= {CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},fetch=FetchType.LAZY,mappedBy="order")
public Set<OrderItem> getItems() {
return items;
}
public void setItems(Set<OrderItem> items) {
this.items = items;
}
public void addOrderItem(OrderItem orderItem){
orderItem.setOrder(this);
this.items.add(orderItem);
}
}
Cascade級聯操作
CascadeType.PERSIST 級聯持久化(保存)操作
CascadeType.MERGE 級聯更新(合并)操作
CascadeType.REFRESH 級聯刷新操作,只會查詢獲取操作
CascadeType.REMOVE 級聯刪除操作
CascadeType.ALL 級聯以上全部操作
Fetch 抓取是否延遲加載,默認情況一的方為立即加載,多的一方為延遲加載
mappedBy 關系維護
mappedBy="order" 表示在OrderItem類中的order屬性來維護關系
package com.hujuan.bean;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class OrderItem {
private Integer id;
private String productName;
private Float sellPrice = 0f;
private Order order;
@Id @GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=30,nullable=false)
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
@Column(nullable=false)
public Float getSellPrice() {
return sellPrice;
}
public void setSellPrice(Float sellPrice) {
this.sellPrice = sellPrice;
}
//optional=true表示該對象(Order)是可選的,對象(Order)可以不存在
//值為false表示不可選即該對象(Order)必須存在,則在數據庫中的外鍵就不能為null)
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},optional=false)
//定義外鍵名稱
@JoinColumn(name="order_id")
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
}