@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}
我做这样的事情:
Troup t = new Troup();
t.getSoldiers().add(soldier);
这也拯救了部队和士兵。由于士兵是所有者,因此还添加了外键。但是哪一个更好,我的意思是使用以下方式保存 toop 或 soldier:
Troop t = ..... // Get troop from session
Soldier s = new Soldier();
s.setTroop(t);
最佳答案
两种方法都会得到相同的结果。但是,我想保存个人 Soldier
entities 效率更高一些:
- 持久性提供者不需要遍历集合
- 代码更符合数据库中发生的事情 - 只有
Soldier
表无论如何都会更新。
但是,也许您应该考虑哪种业务概念更适合,即您是否与个人合作 Soldiers
或 Troops
在应用程序的这一点上。
- 添加
Soldier
到Troop
或 - 分配
Troop
到Soldier
差异可能很微妙,但根据您的业务案例,任何一种都可能是更具可读性和易理解性的解决方案。
关于java - Hibernate:哪个更好:在多对一关联中保存源或目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782872/