inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

JPA @Query 로는 동적쿼리 작성은 불가능한가요?

1057

henry

작성한 질문수 9

0

QueryDSL로는 구현이 어려워, 네이티브 쿼리를 작성하려고 합니다.

그런데, where 조건을 동적으로 작성해야하는데... @Query의 경우 동적쿼리가 불가능한가요?

스프링부트 jpa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
henry님, JPA에서 @Query 어노테이션을 이용한 쿼리는 기본적으로 정적 쿼리입니다. 즉, 실행 시점에 쿼리의 구조가 변경될 수 없어서 동적 쿼리를 직접 작성하는 것은 불가능합니다. 그래서 동적 쿼리가 필요한 경우는 주로 QueryDSL 같은 라이브러리를 사용하게 됩니다.

하지만, 만약 QueryDSL을 사용하기 어려운 상황이라면, @QuerynativeQuery 옵션을 사용하여 네이티브 SQL을 작성하는 방법이 있습니다. 이 경우 동적 쿼리를 직접 작성하기 위해 문자열 조합 등을 사용할 수 있지만, 이는 권장되지 않는 방법입니다. 코드의 가독성이 떨어지고 유지보수하기 어렵기 때문입니다.

대신에, 동적 쿼리의 필요성이 큰 경우에는 QueryDSL 외에도, JPA의 Criteria API를 고려해볼 수 있습니다. Criteria API는 타입 안전성을 제공하며, 복잡한 동적 쿼리를 프로그래매틱하게 구성할 수 있게 도와줍니다.

또 다른 방법으로는, 조건에 따라 분기를 나누어 여러 개의 @Query를 작성하는 것도 하나의 해결책이 될 수 있습니다. 각각의 쿼리에서 다른 WHERE 조건을 사용하여 상황에 맞는 쿼리를 선택적으로 실행할 수 있습니다.

이외에도 복잡한 동적 쿼리가 필요할 때는, 리포지토리에 사용자 정의 메소드를 구현하여 직접 EntityManager를 사용하는 방법도 있습니다. 이를 통해 JPQL 또는 네이티브 쿼리를 동적으로 생성하고 실행할 수 있습니다.

Inner class로 Config를 지정하는 이유

0

29

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

47

2

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

32

1

리뉴얼 시기

0

53

2

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

56

3

설계 트레이드 오프 링크 접속 안됨

0

85

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

46

1

service-discovery 프로세스 가동 이유

0

51

1

트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?

0

47

1

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

0

133

2

h2 database

2

59

2

Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?

0

116

2

Querydsl 설정 할때 - run and test 다르게 설정 할때? 질문

0

61

1

new 패키지명.Dto명 생략가능

0

74

2

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

73

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

65

1

SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류

0

64

1

aws 관련 질문드립니다.

1

69

3

setter 사용하지 않기

0

61

1

세션을 제대로 이해한게 맞는지 궁금합니다

0

58

1

안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?

0

127

2

자막 오타 제보

0

54

1

rabbitmq에 configservice 연결에 대해 질문있습니다.

0

65

1

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

74

2