웹(Web)/백엔드(Backend)

Spring Data JPA @Query 활용법(JPQL, DTO)

SK_MOUSE 2022. 8. 31. 23:36
@Query
메서드에 JPQL 작성하는 방식
@Query, 값, DTO 조회하는법
2. DTO에 맞게 호출하는 법은 아래와 같다.
생성자

이 글에서는 SpringBoot 환경에서 JpaRepository를 인터페이스에서 활용하는 방식과 일반 JPA 방식을 비교하는 내용을 다룬다.

Spring Data JPA

@Query

메서드에 JPQL 작성하는 방식

public interface MemberRepository extends JpaRepository<Member, Long> { @Query("select m from Member m where m.username= :username and m.age = :age") List<Member> findUser(@Param("username") String username, @Param("age") int age); }

 

@Query, 값, DTO 조회하는법

 

1. 단순 엔티티 호출은 아래와 같다.

public interface MemberRepository extends JpaRepository<Member, Long> { @Query("select m.username from Member m") List<String> findUsernameList(); }

 

2. DTO에 맞게 호출하는 법은 아래와 같다.

 

MemberDto.java 

package study.datajpa.repository; import lombok.Data; @Data public class MemberDto { ‌​private Long id; ‌​​private String username; ‌​private String teamName; ​​​​​ ​​​​​ ​​​​​public MemberDto(Long id, String username, String teamName) { ​​​​​this.id = id; ​​​​​this.username = username; ​​​​​this.teamName = teamName; ​​​​​} }

 

위 Dto를 아래 Repository 에서 호출.

public interface MemberRepository extends JpaRepository<Member, Long> { @Query("select new study.datajpa.dto.MemberDto(m.id, m.username, t.name) " ‌‌​​​​+ "from Member m join m.team t") List<MemberDto> findMemberDto(); }

패키지를 찾아서 생성자에 맞는 위치에 값들을 할당해준 @Query를 날려주면 된다.

 

 

반응형