Skip to content

[Spring]JPQL 질문 #165

Answered by PFCJeong
DoohyunHwang97 asked this question in Q&A
Discussion options

You must be logged in to vote

안녕하세요~ 좋은 질문 많이 남겨주셨네요.

  1. JPQL이 우선적으로 적용되는 것 같습니다. JPQL을 사용했음을 명시하도록 함수명을 짓는 것이 좋겠습니다.
  2. 아무래도 쿼리를 직접 작성하다보니 실수의 여지도 있고 가독성도 떨어지긴 합니다. 아래와 같이 적절히 개행을 해서 가독성을 조금이라도 높일 수도 있는데요. 세미나에서 다루지는 않았지만 QueryDSL을 쓰는 방법도 있습니다. 잘못된 쿼리는 성능에 큰 영향을 미치기 때문에 가독성보다는 성능을 신경쓰는게 맞을 것 같습니다.
@Query("""
    SELECT s FROM songs s
    JOIN FETCH s.album al 
    JOIN FETCH s.artists sa
    JOIN FETCH sa.artist
    WHERE s.title LIKE %:keyword%
""")
  1. 네 맞습니다. 프로퍼티에 명시한 FetchType.EAGER보다 JPQL로 작성한 쿼리가 우선시 됩니다.
  2. 특정 칼럼만 가져오고 싶으면 Interface Projection을 사용해야합니다. 위와 같이 JQPL을 작성해도, a.image, ar.name만 조회하는 것이 아니고 album과 artist의 모든 칼럼들을 전부 다 조회합니다.
    albums.image만 조회해왔다고 했을 때, song(SongEntity).album(AlbumEntity).title는 비어있게 되기 때문입니다.

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@DoohyunHwang97
Comment options

Answer selected by DoohyunHwang97
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
Spring Spring 관련 내용
2 participants