해결된 질문
작성
·
3.9K
6
JPA를 사용한지 얼마 안되는 초보인지라 이해가 잘 되지 않아서 그러는데요..ㅜㅜ
저는 이전에 동적쿼리를 생성하기 위해 JpaSpecificationExcutor를 extends하여 조회시에 사용해왔습니다. (findAll을 하면서 인자값으로 넘겨주면 알맞는 쿼리가 생성되더라구요)
물론 queryDSL를 사용하면 더 간단히 처리되는 건 알겠으나 join이 없는 일반 원 테이블 조회에서도 specification과 같은 처리보다 queryDSL을 적용하는 것이 더 적합할지 궁금하여 질문드립니다.
답변 3
10
안녕하세요 햐호호님^^
개인적으로 실무에서 JpaSpecificationExcutor를 사용하는 것은 권장하지 않습니다.
JpaSpecification 자체가 결국 JPA가 제공하는 Criteria로 이루어지는데, JPA의 Criteria는 조금만 복잡해져도, 실무에서 사용이 정말 어려워 집니다. JPA를 잘 사용하는 저도 한참을 들여다 봐야 코드가 읽히더라구요.
그래서 제가 사용하는 모든 프로젝트에서는 JPA Criteria는 사용을 금지합니다. 대신에 Querydsl을 적극 활용하도록 합니다.
추가로 질문주신 join이 없는 일반 원 테이블 조회라고 해도, 결국 요구사항들어가고 프로젝트가 커지면 join도 들어가야 하고, 점점 복잡해질 확율이 매우 높습니다^^!
결론은 JPA Criteria(JpaSpecificationExecutor 포함)을 사용하지 마시고, 단순해도 다른 방법으로 푸시는 것을 권장합니다!
감사합니다^^
5
1