JPA映射關係

關係:數據庫

實體關係是指實體與實體之間的關係,從方向上分爲單向關聯和雙向關聯,從實體數量上分爲一對1、一對多、多對多等。對於任何兩個實體,都要從這兩個方面區分它們之間的關係。fetch

一對一兩種配置方式:spa

  1:主鍵共享(把一個實體的主鍵配置爲另一個實體的主鍵)blog

  2:配合惟一外鍵it

 

單項一對多class

  :配置一個實體的外鍵     數據庫外鍵存在多方,最好讓多方來維護外鍵 ,一方放棄管理維護配置

 

雙向多對一/雙向一對多im

 

public class ProductDir {d3

 

  @Id數據

 

  @GeneratedValue

 

  private Long id;

 

  private String name;

 

  @OneToMany

 

  @JoinColumn(name="dir_id")

 

  private Set<Product> products = new HashSet<Product>();

 

  

 

@Entity

 

public class Product {

 

  @Id

 

  @GeneratedValue

 

  private Long id;

 

  private String name;

 

  @ManyToOne(fetch = FetchType.LAZY) // 實現延遲加載

 

  @JoinColumn(name = "dir_id")

 

  private ProductDir dir;

集合映射的類型

  1.list     PersistentBag(有序,能夠重複

     2.set     PersistentSet(無序,不能夠重複

 

級聯

    :

    級聯保存  PERSIST

    級聯刪除  REMOVE

    所有    ALL

    孤兒刪除 orphanRemoval = true (從一方解除關係,讓多方外鍵置爲空)

 

單項多對多

    

  @ManyToMany

       @joinTable 中間表配置

  joinColumns:首 個列名   inverseJoinColumns: 下個列名

    實體類沒什麼變化   默認懶加載  只配置一個實體類

雙向多對多

      列Teacher/Student

 

 

相關文章
相關標籤/搜索