Spring Data JPA - @Query, 리포지토리 메서드에 쿼리 정의하기

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

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

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

 

리포지토리 메서드에 쿼리 정의하기

쿼리 메서드 기능 3가지

  • 메서드 이름으로 쿼리 생성
  • 메서드 이름으로 JPA NamedQuery 호출
  • @Query 애노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의

 

메서드에 JPQL 쿼리 작성

  • MemberRepository.interface
@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);
  • MemberRepositoryTest.class
@Test
public void testQuery() {
    Member m1 = new Member("AAA", 10);
    Member m2 = new Member("BBB", 20);
    memberRepository.save(m1);
    memberRepository.save(m2);

    List<Member> result = memberRepository.findUser("AAA", 10);
    assertThat(result.get(0)).isEqualTo(m1);
}

앞서 배웠던 메서드 이름으로 쿼리 생성하는 기능의 경우 조건이 많으면 많아질 수록 메서드명이 너무 길어진다는 단점이 있어 조건이 적을 때 주로 사용한다. 그리고 JPA NamedQuery는 실무에서 잘 사용하지 않는다. 마지막으로 이 Repository에 Query 정의하는 방법은 실무에서 정말 많이 사용하는 방법이다. 실무에서는 왜 이 방법을 많이 사용할까? 바로 @Query 애노테이션에 작성된 쿼리에 오타, 문법 오류 등이 발견되면 애플리케이션 로딩 시점에 에러를 띄워준다.

동적 쿼리를 작성하려면 QueryDSL을 사용해야한다. QueryDSL은 다른 강의에서 다룰 예정...!

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/JPA' 카테고리의 다른 글
  • Spring Data JPA - 파라미터 바인딩, 반환 타입
  • Spring Data JPA - @Query, 값, DTO 조회하기
  • Spring Data JPA - JPA NamedQuery
  • Spring Data JPA - 메서드 이름으로 쿼리 생성
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (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
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
Spring Data JPA - @Query, 리포지토리 메서드에 쿼리 정의하기
상단으로

티스토리툴바