본문 바로가기

Spring Boot

(1) Querydsl 성능 최적화와 테스트 목차1. 서론2. dto로 조회하기3. 성능 테스트4. 결론 1. 서론기존에 JPA를 사용하면서 생기는 N+1 문제를 모두 해결했었습니다. 또한 fetch join, batch_size를 사용하여 쿼리 횟수를 최소화하였으며, 중복되는 insert 쿼리를 jdbc template을 사용하여 bulk 쿼리로 대체하는 모든 최적화 과정을 마쳤었습니다. 하지만 DTO로 필요한 데이터만 가져와 최적화하는 것은 하지 않았기 때문에, 이 글에서 기존의 조회 API를 DTO로 조회하면 성능 차이가 얼마나 생길지, 적용 후 테스트 하고자 합니다. 2. DTO로 조회하기DTO로 조회하는 것을 기존에 하지 않았던 이유1:N 관계에 있는 컬렉션은 DTO로 바로 조회하지 못합니다. one 쪽 엔티티의 id(들)을 사용하여 ma.. 더보기
스프링 JPA 테스트 코드에 무심코 적용한 @Transactional 스프링 프로젝트에서 많은 사람들이 JUnit으로 테스트 코드를 작성할 때, @Transactional 어노테이션을 사용한다. 하지만 Spring Data JPA와 함께 Service 테스트 클래스에 @Transactional을 무심코 사용한다면 예상하지 못한 테스트 실패나 누락이 발생할 수 있다. 문제 상황 1:N 연관 관계에 있는 엔티티들을 fetch join으로 잘 조회되는지 테스트하고자 했다. @Entity public class Board extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") private Long boardId; @ManyToOne(fetch = F.. 더보기