關係:數據庫
實體關係是指實體與實體之間的關係,從方向上分爲單向關聯和雙向關聯,從實體數量上分爲一對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