반응형
이 글에서는 SpringBoot 환경에서 JpaRepository를 인터페이스에서 활용하는 방식과 일반 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를 날려주면 된다.
반응형
'웹(Web) > 백엔드(Backend)' 카테고리의 다른 글
Spring Data JPA 페이징 (0) | 2022.09.01 |
---|---|
Intellij 한번에 변수 이름 바꾸는 단축키 (0) | 2022.08.31 |
Java로 배우는 디자인패턴 (0) | 2022.07.14 |
인프런 김영한 개발자님의 스프링강의 대략적인 틀 (0) | 2022.07.02 |
Spring JPA 쿼리메소드 (0) | 2022.02.20 |