인프런 커뮤니티 질문&답변

코쟁이님의 프로필 이미지

작성한 질문수

실전! Querydsl

jpa에서 Inline View를 포함한 구문은 지원하지 않는다고하셧는데요 이 말이 의미하는게 정확히 무엇인가요?

작성

·

615

0

Inline View를 포함한 구문은 지원하지 않는 다고 하셨습니다.  이말은 다음과 같은 결론을 도출 할 수 있는건가요?

'Inline View 를 포함한 sql문의 결과와 동일한 결과를 영속성 컨텍스트에서 가져올 수 없다'

즉,  부득이하게 native query를 사용한다면 이는 영속성 컨텍스트의 장점 중에 하나인 1차 캐시에서 빠르게 가져오는 효과를 볼 수 없다.

저는 이렇게 이해 하였습니다.

 그런데 인터넷에서 검색을 해보니 어떤 블로그에 다음과 같은 문장이 있었습니다.

그렇다면 JPA가 지원하는 네이티브 SQL과 JDBC API를 직접 사용하는 것에는 어떤 차이가 있냐? 그것은 바로 네이트브 쿼리는 엔티티를 조회할 수 있고 JPA가 지원하는 영속성 컨텍스트의 기능을 그대로 사용할 수 있다는 것이다!

정확히 블로그 내용이 맞는거지는 모르겠습니다만 위 블로그 내용이 맞다면

왜 Inline View를 포함한 구문을 지원하지 않는건가요?

너무 헷갈리고 어떤것이 정답인지 궁금합니다 도와주세요 김영한 선생님..

답변 2

1

코쟁이님의 프로필 이미지
코쟁이
질문자

감사합니다. 저는 기술적인 한계가 있는줄 알았습니다.....제가 너무 깊게 생각했었나보네요

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 코쟁이님

Inline View라는 것은 From 절의 서브쿼리를 말합니다.

예를 들면 다음과 같은 것입니다.

selelct x from (

  select z from Z z

)

JPQL에서는 해당 구문을 지원하지 않습니다.

이 경우 native query를 사용하거나, 또는 JdbcTemplate 같은 별도의 라이브러리를 사용해서 조회하는 것이 권장됩니다.

너무 복잡하게 생각하시기 보다는, 단순히 JPQL에서 해당 문법이 지원되지 않는 것으로 이해하시면 됩니다.

감사합니다.