문제 상황SpringBoot의 Junit5에서 Memory DB를 사용하여 Repository 계층을 테스트하는 방법은 크게 두가지가 있습니다.1. @DataJpaTest 활용2. @SpringBootTest + MemoryDB이중 @DataJpaTest를 활용하여 Repository계층을 테스트하는 상황에서 만난 오류를 정리해보려고 합니다. 오류의 내용은 MEMBER라는 테이블을 찾을 수 없어 sql 쿼리를 준비할 수 없다는 내용이었습니다.분명 application-test.yml 파일은 다음과 같이 ddl-auto를 create로 설정하여 테이블을 생성하도록 하였고@ActiveProfiles("test") 어노테이션을 사용하여 해당 설정파일을 읽도록 하였습니다.도무지 이해할 수 없는 에러였습니다.로그..
현재 aws의 프리티어 등급의 EC2(1gb ram, 30gb ssd)와 RDS(MySql, 1gb ram, 2gb storage)그리고 ElastiCache(Redis, 0.5 gb ram)을 사용하여 springboot 프로젝트를 배포하고 있습니다. 대상으로 하는 조회 엔티티는 다음과 같습니다. 1. 현상현재 Repository 클래스에서 join을 통해 review의 평균점수, 개수를 기준으로 정렬하여 데이터를 조회하고 있는데아래는 데이터 20만건을 조회하였을때 평군 3초의 로딩시간이 소요되는것을 확인했습니다. 2. 워밍업 - 상속/구현을 사용하지 않고 querydsl 사용하기이전에 querydsl을 사용할 때에는 다음과같이 별도의 ~RepositoryCustom이라는 인터페이스를 생성하고해당..
Java Persistence API를 활용하여 DB에 복잡한 질의를 생성하는 경우는 보통여러 테이블을 조인하여 원하는 결과를 만들어야 할 때 입니다. 이때, 여러테이블을 조인하는 과정에서 N+1 문제를 해결하기 위해Fetch Join을 많이 쓰지만, 좀 더 구체적인 상황에서 Fetch Join 사용을 구분해보려고 합니다그래서 다음 2가지의 경우를 나누어 정리해 보고자 합니다.fetch join을 사용해야하는 적절한 경우fetch join을 사용할 수 없는 경우쿼리를 생성할때는 QueryDSL을 사용하였습니다. 1. Fetch Join은 무엇인가?JPA는 Entity를 조회할때 기본적으로 지연로딩(Lazy Loading)이 원칙입니다public class Board extends BaseEntity ..