SQL, JPQL
을 코드로 작성할 수 있도록 도와주는 빌더 API- JPA Criteria에 비해서 편리하고 실용적
- 오픈소스
- SQL, JPQL은 문자열이다 -> Type-Check가 불가능하다.
- 컴파일 시점에 알 수 있는 방법이 없다. -> 문자열
- 해당 로직 실행 전까지 작동 여부를 확인을 할 수 없다.
- 해당 쿼리 실행 시점에 오류를 발견한다.
문자가 아닌 코드로 작성가능하다
- 컴파일 시점에 문법 오류 발견
- 코드 자동완성(IDE 도움)
- 단순하고 쉽다.(코드 모양이 JPQL과 거의 비슷하다)
- 동적 쿼리
- 수 조 단위의 정산을 하는데, JPA로 다 처리
- 크리티컬한 결제 같은 시스템도 JPA로 처리
- SpringBoot + JPA + QueryDSL 기본으로 깔고간다.
- 유연한 DB변경(ex. MySQL -> Oracle)의 장점과 테스트
Junit
통합 테스트시 H2 DB 메모리 모드로 돌려서 사용- 로컬 PC에는 H2 DB 서버 모드로 실행
- 개발 운영은 MySQL, Oracle로 한다.
- DB 방언을 설정만 바꾸면 가능한 일
- 테스트, 통합 테스트시 CRUD를 믿고간다.(내가 짠 쿼리는 그것을 마저 테스트를 거쳐가야한다.)
CRUD 테스트 할 시간에 핵심 비즈니스 테스트 코드를 열심히 짜자
- 빠른 에러발견
- 쿼리 떄문에 문제가 발생x
- 컴파일 시점에 대부분 오류 발견, 늦어도 애플리케이션 로딩 시점에 발견
- 최소한 쿼리 문법 실수나 오류는 거의 발생x
- 대부분이 비즈니스 로직의 오류