Spring Data JPA - @Query, 값, DTO 조회하기

2022. 7. 30. 14:36·공부/JPA
반응형

출처 : 인프런 실전! 스프링 데이터 JPA

Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다.

 

@Query, 값, DTO 조회하기

단순히 값 하나 조회

여태 엔티티 위주로 조회를 했는데 그럼 엔티티에 들어있는 필드 하나, 즉 기본 타입으로 데이터를 조회하려면?

@Query("select m.username from Member m")
List<String> findUsernameList();
@Test
public void findUsernameList() {
    Member m1 = new Member("AAA", 10);
    Member m2 = new Member("BBB", 20);
    memberRepository.save(m1);
    memberRepository.save(m2);

    List<String> result = memberRepository.findUsernameList();
    for (String s : result) {
        System.out.println("s = " + s);
    }
}
select
    member0_.username as col_0_0_ 
from
    member member0_
s = AAA
s = BBB

 

 

DTO로 직접 조회

  • DTO  생성
@Data // getter, setter가 다 들어가 있으므로 실무에선느 사용 X
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;
    }
}
  • MemberRepository.interface
@Query("select new study.datajpa.dto.MemberDto(m.id, m.username, t.name)from Member m join m.team t")
List<MemberDto> findMemberDto();
  • MemberRepositoryTest.class
@Test
public void findMemberDto() {

    Team team = new Team("teamA");
    teamRepository.save(team);

    Member m1 = new Member("AAA", 10);
    m1.setTeam(team);
    memberRepository.save(m1);

    List<MemberDto> memberDto = memberRepository.findMemberDto();
    for (MemberDto s : memberDto) {
        System.out.println("s = " + s);
    }
}
! DTO로 직접 조회 하려면 JPA의 new 명령어를 사용해야 한다. 그리고 다음과 같이 생성자가 맞는 DTO가 필요함

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/JPA' 카테고리의 다른 글
  • Spring Data JPA - 순수 JPA 페이징과 정렬
  • Spring Data JPA - 파라미터 바인딩, 반환 타입
  • Spring Data JPA - @Query, 리포지토리 메서드에 쿼리 정의하기
  • Spring Data JPA - JPA NamedQuery
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    방통대
    토비의스프링부트
    전자정부프레임워크
    개발자
    JPA
    QueryDSL
    RESTful
    알고리즘
    프로그래머스
    Java
    에러해결
    스프링부트
    인프런
    토이프로젝트
    기출문제
    Spring
    springboot
    프론트엔드
    IT
    코딩테스트
    SQL
    넥사크로
    SpringBoot를 이용한 RESTful Web Service 개발
    운영체제
    자바스크립트
    MSA
    egov
    oracle
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
Spring Data JPA - @Query, 값, DTO 조회하기
상단으로

티스토리툴바