Spring Data JPA 기본 사용법 정리

Chooooo·2023년 9월 4일
0

TIL

목록 보기
13/22
post-thumbnail

😎 Spring Data JPA

spring framework에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트

  • CRUD 처리를 위한 공통 인터페이스 제공
  • repository 개발 시 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입
  • 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있도록 지원
  • 공통 메소드는 스프링 데이터 JPA가 제공하는 org.springframework.date.jpa.repository.JpaRepository 인터페이스에 count, delete, deleteAll, deleteAll, deleteById, existsById, findById, save ..

c.스프링 데이터 JPA 적용

  • 공통 메소드가 아닐 경우에도 스프링 데이터 JPA가 메소드 이름을 분석해서 JPQL을 실행
public interface MemberRepository extends JpaRepository<Member, Long> {
    Member findByUsername(String username);
    // select m from Member m where username = :username
}
 
public interface ItemRepository extends JpaRepository<Item, Long> { 
}

😁 설정

Dependency
build.gradle 파일의 dependencies 부분에 다음을 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

공통 인터페이스, JpaRepository 적용

Spring Data JPA는 JpaRepository라는 공통 인터페이스를 제공한다.
이 인터페이스는 기본적인 CRUD와 페이징 등 유용한 기능을 제공해주며, 적용하는 방법도 간단하다.

JpaRepository<T, ID>를 상속하는 인터페이스를 구성하면 된다.

  • T:엔티티 타입
  • ID 식별자 타입
public interface EntityRepository extends JpaRepository<T,ID> {}

🎈 @Repository 어노테이션은 생략 가능하다. 컴포넌트 스캔과 JPA 예외를 스프링 예외로 변환하는 과정을 스프링 데이터 JPA가 자동으로 처리해준다.

Repository 구현하는 규칙

Method

Keyword

  • 이 정도만 알고 있으면 우리가 사용하려는 대부분의 쿼리문은 이런 식으로 작성이 가능하다.

🧨 이름 규칙

메서드 이름에 관한 규칙은 다음과 같다. (By 다음에는 필드명이 들어간다.)

  • 엔티티의 필드명이 변경되면 인터페이스에 정의한 메서드 이름도 꼭 함께 변경해야 한다.
  • 그렇지 않으면 애플리케이션 시작하는 시점에 오류 발생.

🧨 키워드 종류

  • 메서드 이름에 들어가는 키워드

[공식 문서 참조]

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글