[英]Unidirectional one to many mapping with joinColumn
根据hibernate文档,hibernate团队强烈建议在没有连接表的情况下不要使用一对多单向映射。 我想知道这是因为性能问题还是背后有其他原因。
说如果有一个可以拥有许多电话号码的员工,那么拥有这个映射
@Entity
public class Employee {
...
@OneToMany
@JoinColumn(name="employee_fk")
public List<Phone> phones;
...
}
@Entity
public class Phone {
...
}
Hibernate将使用外键生成电话表,因此我在这里看不到任何问题。 另外,我也不想让电话类拥有employee属性。 Hibernate小组建议在这种情况下使用联接表,但是为什么我应该不必要地创建一个表呢?
与其说是性能问题,不如说是设计问题。 如果您认为某个电话不知道其分配给的雇员,则意味着该电话实体独立于该雇员实体。 并且,如果它独立于Employee实体,则其表不应具有Employee表的外键。
此外,由于电话不了解其员工,这意味着它可能会被重用并与其他类型的实体(公司,客户等)相关联。对于所有可以在电话表本身中有一个电话。
如果是单向映射,休眠将命中数据库两次,
对于同一个员工John的新电话,它将执行以下操作
在电话号码表中插入新电话号码
在phn no表中使用此phn no更新员工id(john)
此外,您还需要映射您的电话持久性类别并向特定员工注册,否则您的电话类别将被重用,我想您不想这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.