Hibernate N+1/1+N問題

Group對Equipment是一對多關係,若是使用SpringData的簡捷接口JpaSpecificationExecutor findAll發起查詢,就會查詢group表一次,equipment表屢次,根據groupId。這就是傳說中的1+N性能問題,若是group下equipment不少,就會引起當先查詢線程的棧溢出。由此能夠須要注意,配置對象配置了單向/雙向一對多,就可能發生此問題,須要避免使用這類間接接口。html

使用hibernate/JPA的關係時,須要仔細思考一下查詢的時候會生成的SQL。hibernate/jpa當然爲咱們省去了表和對象的映射,但要思考他的處理方式。java

@Data
@Entity
@Table(name = "t_group")
public
class Group extends XbootBaseEntity {

    @ApiModelProperty(value = "組名")
    private String name;

    @ApiModelProperty(value = "備註")
    private String remark;

    @ApiModelProperty(value = "所屬項目")
    private String projectId;

//    @ManyToOne
//    private Project project;

    @OneToMany(mappedBy = "group", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<Equipment> equipments;
}

 

https://www.cnblogs.com/xwgcxk/p/9712153.htmlapp

相關文章
相關標籤/搜索