JPQL 동적 쿼리
587
작성한 질문수 15
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
그 강의에서 동적 쿼리 작성은 QueryDSL을 사용해야 한다고 했는데, 강의에서 em.createQuery()로 JPQL을 작성하고 setParameter를 통해 바인딩을 한다면 그게 동적 쿼리 작성하는거 아닌가요???
굳이 QueryDSL을 사용해야할 이유가 있나요??
답변 1
0
안녕하세요. 돈우님, 공식 서포터즈 y2gcoder입니다.
먼저 개인적으로는 동적 쿼리에 대해서 해당 링크(클릭)을 의미한다고 저는 이해하고 있습니다.
위의 방식을 em.createQuery()문에 넣으려면 해당 JPQL문을 작성해야 하고, 파라미터에 따라 다양한 조건문에 따라 JPQL 조건문을 문자열로 추가해주거나 하는 과정이 필요합니다.
문자열로 동적으로 쿼리를 추가하고 제거하는 과정은 오타 등의 실수가 발생할 여지도 너무 크고, 더불어 실수한 것을 알아차리기도 어려워 실행 후에 해당 JPQL문이 사용될 때나 알아차릴 수도 있습니다. 반면에 QueryDSL은 자바 객체를 이용해서 동적 쿼리문을 짤 수 있게 도와주기 때문에 개인적으로는 더 직관적이라고 생각합니다. 그보다 더 큰 장점은 객체로 쿼리를 짜기 때문에 오타를 낼 가능성도 적고, 또 쿼리가 잘못된 부분을 컴파일 단계에서 잡아주는 것도 크기 때문에 이점이 있다고 생각합니다.
이러한 부분은 조회 쿼리가 점점 더 복잡해질 수록 메리트가 있는 기능이라고 생각합니다.
감사합니다.
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
49
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
47
1
JPQL 메소드와 락
0
50
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
87
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
87
2
연관관계 매핑 질문드립니다.
0
80
2
h2데이터베이스 실행오류
0
104
2
persistence.xml
0
102
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
89
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
82
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
90
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
135
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
175
2





