實際上無論是多對一,一對多,多對多,還有一對一。最底層的實現的本質就是外鍵關係,外鍵怎麼處置,放誰中。
一對一基本是單向的,不需要雙向,雙向的話爲什麼不放在一張表裏呢。
一對多多對一關鍵還是多的一方拿到一的外鍵。不要雙向設置,級聯關係太亂。
多對多,有一種多對多的實現方式是在多的兩端設置,實際上最後還是形成了第三張表,不如通過我適應的實現方式,一對多的形式組合。具體是一對多還是一對一根據業務的需要來。
例如一條狀態的評論表。表一是用戶表。表二是狀態表。評論表示表三,在業務邏輯上,狀態需要去獲取所有的這條狀態的評論,所以一對多的關係。用戶不需要獲取所有的評論那麼就一對一就好了。
再舉個例子,
模板範例:
一對一單向:
@Entity
@Table(name="tb_account")
public class Account {
@OneToOne(mappedBy ="account")
privateAccountDetailaccountDetail;
}
@Entity
@Table(name="tb_accountDetail")
public classAccountDetail {
@OneToOne
@JoinColumn(name="accountId")
privateAccountaccount;
}
一對多單向:多方添加外鍵字段
@Entity
@Table(name = "t_users")
public class User {
@OneToMany
@JoinColumn(name="userId")
private ListuserLoginInfos;
}
@Entity
public class UserLoginInfo {
@ManyToOne
@JoinColumn(name="userId")
private User user;}
多對多處理成兩個多對一