Spring 春季数据JPA@OneToMany
我正在设计DB的模型:Spring 春季数据JPA@OneToMany,spring,hibernate,spring-mvc,spring-data-jpa,spring-data,Spring,Hibernate,Spring Mvc,Spring Data Jpa,Spring Data,我正在设计DB的模型: @Entity @Table(name="t_urna") public class Urna implements Serializable { @OneToMany(mappedBy = "urna", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JsonIgnore pr
@Entity
@Table(name="t_urna")
public class Urna implements Serializable {
@OneToMany(mappedBy = "urna",
cascade = CascadeType.ALL,
orphanRemoval = true, fetch = FetchType.EAGER)
@JsonIgnore
private Set<Vot> vots = new HashSet<>();
..
}
@Entity
@Table(name="t_vot")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Vot implements Serializable {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "urna_id")
@JsonIgnore
Urna urna;
}
@实体
@表(name=“t_urna”)
公共类Urna实现可序列化{
@OneToMany(mappedBy=“urna”,
cascade=CascadeType.ALL,
(删除=true,获取=FetchType.EAGER)
@杰索尼奥雷
private Set vots=new HashSet();
..
}
@实体
@表(name=“t_vot”)
@JsonInclude(JsonInclude.Include.NON_NULL)
公共类Vot实现可序列化{
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“urna\u id”)
@杰索尼奥雷
乌尔纳乌尔纳;
}
我想知道在这两个类中设置FetchType.eanger是否会导致问题,比如永无止境的循环或堆栈溢出。。。。如果这是一个好的实践那么
@ManyToOne
的默认获取类型无论如何都是EAGER
。如果在@OneToMany
上设置它,则不会导致堆栈溢出
如果这是一个好的做法?我不会说是的,但有时您还需要获取相关实体。但是我想说,最好指定不,你不会有一个无休止的循环 我不认为在这个层次上有好的或坏的做法。有时最好使用LAZY,因为它会阻止您加载不需要的对象。有时最好使用EAGER,因为如果需要对象,它可以防止hibernate运行多个请求
在编写微服务时,我总是使用EAGER(et-boundedcontextaggregate)。对于一块巨石,也许懒惰更明智。应该会有帮助……你不会有循环问题。但急切的收获是一个巨大的挑战。我不建议在任何情况下使用它。