实际上无论是多对一,一对多,多对多,还有一对一。最底层的实现的本质就是外键关系,外键怎么处置,放谁中。
一对一基本是单向的,不需要双向,双向的话为什么不放在一张表里呢。
一对多多对一关键还是多的一方拿到一的外键。不要双向设置,级联关系太乱。
多对多,有一种多对多的实现方式是在多的两端设置,实际上最后还是形成了第三张表,不如通过我适应的实现方式,一对多的形式组合。具体是一对多还是一对一根据业务的需要来。
例如一条状态的评论表。表一是用户表。表二是状态表。评论表示表三,在业务逻辑上,状态需要去获取所有的这条状态的评论,所以一对多的关系。用户不需要获取所有的评论那么就一对一就好了。
再举个例子,
模板范例:
一对一单向:
@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;}
多对多处理成两个多对一