본문 바로가기
반응형

개발/JAVA31

JPA N+1, pageable, projection. 지난 게시물에서의 결과를 요약하면 아래와 같다. N+1 문제 해결 @OneToMany @ManyToOne @Query() 를 이용한 fetch join inner join 으로 fetch join 된다. @EntityGraph left outer join @Fetch(FetchMode.SUBSELECT) subselect 구문을 해결된다. 그리고 페이징을 더하면? pageable 을 더하면? @OneToMany @ManyToOne @Query() 를 이용한 fetch join X X @EntityGraph X O @Fetch(FetchMode.SUBSELECT) O X O - 정상 X - 실패 그렇다면 되는 넘들로 각각 projection 까지 적용해보자 Projection 이란. 물론 이 또한 정리가 .. 2022. 10. 28.
JPA n+1 정리 page, projection. 하도 정리글이 많아서 나도 테스트해보면서 정리 할꺼임. * 나는 일대다(1:N), 다대일(N:1) 그리고 단방향, 양방향에 따라 문제가 다른 줄 알았는데 아니었음. 어차피 각자 단방향으로 연결된 양방향느낌(?) 인거니까 n+1 이 뜨면 성능상 문제가 발생할 수 있음. 테스트 각설하고 테스트는 아래처럼 진행한다. Team (1) : Member( N ) 둘다 LAZY 모드로 fetch 설정 해놓았다. ############################################################팀 public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "team_id") private L.. 2022. 10. 27.
JPA N:1 단방향 맵핑 지난 게시물에 이어 이번에는 N:1 단방향을 알아보자. 각설하고 바로 예제부터 보자. Team(1) : Member (N) 으로 아래와 같이 구성되어있다. @Builder @Data @NoArgsConstructor @AllArgsConstructor @Entity(name = "TEAM") public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "team_id") private Long id; private String name; } ~중략 public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(na.. 2022. 10. 26.
JPA 1:N 양방향 맵핑 지난 포스트에 이어 JPA 1:N 양방향을 알아보자. 테스트용 객체 Team (1) : Member (N) 을 아래와 같이 구성한다. @Builder @Data @NoArgsConstructor @AllArgsConstructor @Entity(name = "TEAM") public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "team_id") private Long id; private String name; @OneToMany(cascade = CascadeType.ALL, mappedBy = "team") private List members; } public class Member { @Id.. 2022. 10. 26.
반응형