반응형
개요
언제?
- 검색 등의 요청에서 파라미터가 많음쿼리문을 객체로 다루어 동적으로 생성하고자 할 때 사용
→ 쿼리문의 where 조건 변동성이 크고 복잡하여 쿼리문을 객체로 다루어 동적으로 생성하고자 할 때 사용 - ORM JPA 로 웬만한 건 다 할 수 있지만, JPA 어노테이션으로 네이티브 쿼리로만 관리하기에는
쿼리가 복잡하거나 가독성이 떨어지거나 유지보수가 어려울 경우에 사용
장점
- sql 실행하지 않아도 컴파일 시 오류 발견 가능
- 메서드로 쿼리 구성 가능
- 유지보수성
알고 가야 할 것, 선택의 이유
queryDSL 도 JPA 처럼 내부적으로 EntityManager 기반으로 동작
JDBC 템플릿 기준으로 쿼리 생성하는 건 똑같음
항상 왜 선택했는가를 말할 줄 알아야함
- 복잡한 쿼리문에 대헤 조금만 쿼리가 길어져도 유지보수가 어려워졌기 때문
- JPA 를 사용하다가 한계가 와서 쓴건지? 어떤 부분이 힘들어서 도입한 건지? 고민한 흔적 남기기
Query DSL
- Java 로 sql 쿼리를 작성할 수 있게 해주는 라이브러리
- 컴파일 단계에서 에러 확인 가능
- JPQL 등 직접 sql 을 활용하는 방식은 sql 문 실행 전까지는 오류를 알 수 없음
- 동적으로 쿼리를 작성해 코드가 유연해짐
- QFile : QueryDsl 에서 쿼리를 위해 사용하는 java 파일
- entity 생성 후 gradle 의 compile java 를 실행하면
- entity 마다 QFile 을 자동으로 생성함
- src/generated : IntelliJ 에서 QFile 저장 위치 (여기 아니면 build 아래에)
다음에 이어서..
반응형
'TIL' 카테고리의 다른 글
[설계 문서] RUSH Logistic - AI 기반 배송 소요시간 예측 물류 시스템 (MSA) (1) | 2024.12.06 |
---|---|
[TIL] 분산 추적 (Spring Cloud Sleuth) & 로깅 (Zipkin) & 이벤트 드리븐 아키텍처 및 스트림 처리 (0) | 2024.11.25 |
[TIL] MSA - 서킷 브레이커 (Resilience4j) (1) | 2024.11.22 |
[TIL] 24/11/12 TS : 에러는 앞뒤상황을 보자 (0) | 2024.11.12 |
[TIL] 24/11/11 포스트맨 귀찮아 통합 테스트 짤래 (0) | 2024.11.11 |