春季数据JPA@OneToMany



我正在设计DB:的模型

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

我想知道在两个类中设置FetchType.EAGER是否会导致问题,比如一个不断结束的循环或一些堆栈流。。。。如果这是一个好的做法

不,你不会有一个永无止境的循环。

我认为在这个层面上没有好的或坏的做法。有时最好使用LAZY,因为它可以防止您加载不需要的对象。有时最好使用EAGER,因为如果您需要对象,它可以防止hibernate运行多个请求。

在编程微服务时,我总是使用EAGER(et bounded context aggregate(。对于一块巨石来说,也许拉齐更明智。

@ManyToOne的默认获取类型无论如何都是EAGER。如果您在@OneToMany上设置它,它不应该以堆栈溢出结束。

如果这是一个好的做法?我不会说是的,但有时你也需要获取相关的实体。但我想说,指定实体图总是更好的

最新更新