@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);

这也节省了部队和士兵。由于士兵是所有者,因此还添加了外键。但是哪一种是更好的方法,我的意思是使用以下方法来挽救士兵或士兵:
Troop t = .....     // Get troop from session
Soldier s = new Soldier();
s.setTroop(t);

最佳答案

两种方法都可以达到相同的结果。但是,我认为保存单个Soldier实体效率更高:

  • 持久性提供程序不需要遍历集合
  • 该代码与数据库中发生的情况更好地相对应-无论如何,只有Soldier表得到更新。

  • 但是,也许您应该考虑哪种业务概念更合适,这意味着您现在是在应用程序中使用单独的Soldiers还是使用Troops
  • Soldier添加到Troop
  • Troop分配给Soldier

  • 两者之间的差异可能很小,但是根据您的业务情况,可能是一种更易读和易理解的解决方案。

    07-26 01:46