🔻Back-End/Spring

[Spring] JPA Native Query + Projection

_니지 2023. 2. 1. 20:45

❗Native Query + Projection

JPA를 통해 Repository를 만들 땐 한 엔티티 당 하나의 리포지토리를 만들었어야 한다.

하지만 이 방법은 여러 테이블을 조인하여 결과를 가질 때 불편하기 때문에 native query와 projection을 사용하여 이 문제를 해결할 수 있다.

Native Query는 실제 사용할 쿼리를 @Query를 통해 명시해 줄 수 있고, 파라미터를 주입 받아서 동적으로 쿼리를 실행할 수 있다.

projection은 인터페이스 기반으로 쿼리 실행 시 반환되는 객체의 형태를 인터페이스로 선언하여 이와 매핑시켜 서비스단에서 사용할 수 있게 해 준다.

 

 

❗구현

유저가 좋아요를 누른 책의 정보를 담아둔 liked_book 테이블엔 user_idx와 book_idx가 있고,

해당 쿼리를 통해 userIdx를 입력받고 유저가 좋아요 누른 책의 제목을 조회하는 쿼리를 작성하고자 한다



✏️interface 구현

유저의 아이디와 책의 이름을 조회할 것이고 이 조회한 내용을 UserLikedBook이라는 인터페이스에 매핑해줄 수 있다.

이 인터페이스 안에는 조회하는 항목의 getter를 같이 정의해준다



✏️ 쿼리 작성

쿼리문을 작성한 후 @Query에 value로 넣어주고 nativeQuery를 true로 바꿔준다.

쿼리문에 파라미터가 필요한 경우엔 함수의 파라미터에 넣어준 후 필요한 부분에 ':변수명' 형태로 넣어준다

 

 

 

 

728x90
반응형