在JPA API中,javax.persistence.CascadeType類中定義了一些常量,分別表示特定的級聯操做:java
當經過註解來映射持久化類時,若是但願使用底層Hibernate的一些級聯特性,那麼還能夠使用org.hibernate.annotations. CascadeType類的一些常量,例如:數據庫
例如如下@OneToMany註解的cascade屬性的取值爲「org.hibernate.annotations.CascadeType.SAVE_UPDATE」:緩存
@OneToMany(mappedBy="parentCategory", targetEntity=Category.class) @org.hibernate.annotations.Cascade( org.hibernate.annotations.CascadeType.SAVE_UPDATE) private Set<Category> childCategories = new HashSet<Category>(0);
Category類是具備自身雙向關聯的類,它的childCategories屬性以及parentCategory屬性,進行了以下映射:markdown
@OneToMany(mappedBy="parentCategory", targetEntity=Category.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER) private Set<Category> childCategories = new HashSet<Category>(0); //子商品類別 @ManyToOne(targetEntity =Category.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER) @JoinColumn(name="CATEGORY_ID") private Category parentCategory; //父商品類別
對於以上兩個屬性,它們的級聯操做都是CascadeType.ALL,這意味着對當前的Category對象進行特定操做時,會對所關聯的父類別Category對象,以及所關聯的全部子類別Category對象進行一樣的級聯操做。
另外,爲了保證從數據庫中加載一個Category對象時,會當即加載所關聯的父類別和子類別Category對象,採用了當即檢索策略:FetchType.EAGER。
app