博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate N+1/1+N问题
阅读量:6818 次
发布时间:2019-06-26

本文共 777 字,大约阅读时间需要 2 分钟。

  hot3.png

Group对Equipment是一对多关系,如果使用SpringData的简捷接口JpaSpecificationExecutor findAll发起查询,就会查询group表一次,equipment表多次,根据groupId。这就是传说中的1+N性能问题,如果group下equipment很多,就会引发当先查询线程的栈溢出。由此可以需要注意,配置对象配置了单向/双向一对多,就可能发生此问题,需要避免使用这类间接接口。

使用hibernate/JPA的关系时,需要仔细思考一下查询的时候会生成的SQL。hibernate/jpa固然为我们省去了表和对象的映射,但要思考他的处理方式。

@Data@Entity@Table(name = "t_group")publicclass 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
equipments;}

 

转载于:https://my.oschina.net/773355/blog/3034682

你可能感兴趣的文章
携带更方便功能全 iPone与Apple Watch球形尿袋
查看>>
行为型模式:策略模式
查看>>
实现批量数据增强 | keras ImageDataGenerator使用
查看>>
太忙女友消息未及时回复,分手吗?python微信自动消息帮你谈恋爱
查看>>
Java 多线程NIO学习
查看>>
命名实体识别
查看>>
动态切换的动态代理
查看>>
电商项目(下)
查看>>
寻找一种易于理解的一致性算法(扩展版)下
查看>>
MySQL - 高可用性:少宕机即高可用?
查看>>
2018电影票房分析-谁才是票房之王
查看>>
程序员可以干到多少岁?
查看>>
Storm系列(六)storm和kafka集成
查看>>
东南亚的招聘骗局,程序员请注意!
查看>>
Android 获得View宽高的几种方式
查看>>
iOS正则表达式
查看>>
关于javascript的this指向问题
查看>>
Promise的理解和用法
查看>>
java B2B2C Springboot电子商城系统-高可用的服务注册中心
查看>>
Dubbo的总体架构
查看>>