java - Hibernate:哪个更好:在多对一关联中保存源或目标

标签 java hibernate jpa orm one-to-many

@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表无论如何都会更新。

但是,也许您应该考虑哪种业务概念更适合,即您是否与个人合作 SoldiersTroops在应用程序的这一点上。

  • 添加 SoldierTroop
  • 分配 TroopSoldier

差异可能很微妙,但根据您的业务案例,任何一种都可能是更具可读性和易理解性的解决方案。

关于java - Hibernate:哪个更好:在多对一关联中保存源或目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782872/

相关文章:

java - 使用 Java,如何通过 adb 以编程方式获取 ddmlib FileEntry 对象以获取 sdcard 中的某些内容?

java - 如何从maven项目中自动排除未使用的jar文件?

java - 回滚时的 Spring 事务不会将数据库恢复到以前的状态

java - 如何在 jsonb postgresql 中查询并转换为谓词 JPA

java - 表链接不正确?

java - 包含图像和文本的 ListView 内存不足异常

java - Maven,稳定性,用v3还是用v2?

java - 轻度使用后,Tomcat 随机关闭并出现 AbstractProtocol 暂停

java - 使用枚举作为参数的 Hibernate 查询

hibernate - 带有关联表的 JPA 注解