Hibernate一对多坚持

时间:2018-03-13 10:21:16

标签: hibernate one-to-many

我们正在以下面的格式将JSON数据从前端获取到Spring REST控制器,

{
"employerName":"ABC Corp",
"employees":[
        {"employeeName":"Rambo"},
        {"employeeName":"Mark"},
        {"employeeName":"Jaicey"},
        {"employeeName":"John"}
    ]
}

我们已经找到两种解决方案来映射雇主和雇员之间的一对多关系

解决方案:1(所有者为一方)

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "employer_id")
private Set<Employee> employees = new HashSet<Employee>();

@ManyToOne
@JoinColumn(name = "employer_id")
private Employer employer;

解决方案:2(所有者多方)

@OneToMany(mappedBy = "employer", cascade = CascadeType.ALL)
private Set<Employee> employees = new HashSet<Employee>();

@ManyToOne
@JoinColumn(name = "employer_id")
private Employer employer;

现在的问题是,第一种方法会触发其他更新语句,并且根据hibernate文档声明未被优化。

第二种方法需要对员工列表进行迭代,并为休息控制器中的每位员工设置雇主价值

请帮助解决/配置映射的优化方法。

1 个答案:

答案 0 :(得分:0)

CascadeType.ALL执行为一个实体也为另一个实体(创建,更新,删除等)完成的所有操作。我想在你的情况下,额外的使用会导致不必要的更新和性能问题。