❗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
반응형
'🔻Back-End > Spring' 카테고리의 다른 글
[Spring] Spring Security 개념 및 동작 흐름 (0) | 2024.07.22 |
---|---|
[Spring error] Error running . Command line is too long (0) | 2023.01.11 |
[Spring error] Cannot call sendError() after the response has been committed (0) | 2023.01.07 |
[Spring] MySQL, MariaDB, H2 DB 연결하는 application.yml 설정 (0) | 2023.01.07 |
[Spring] JPA ddl-auto 옵션 정리 (0) | 2023.01.06 |