Spring Data JPA, Query Methods

Sunghun Kim·2024년 11월 5일
0

Jpa

목록 보기
4/10

Spring Data JPA란?

  • Spring Data JPAJPA를 쉽게 사용할 수 있게 만들어놓은 하나의 모듈입니다.
    • JPA를 추상화시킨 Repository 인터페이스를 제공합니다.
    • Repository 인터페이스Hibernate와 같은 JPA구현체를 사용해서 구현한 클래스를 통해 사용됩니다.
    • 개발자들은 Repository 인터페이스를 통해 JPA를 간편하게 사용할 수 있게 되었습니다.

Spring Data JPA의 SimpleJpaRepository

  • Spring Data JPA에서는 JpaRepository 인터페이스를 구현하는 클래스를 자동으로 생성해줍니다.
  • Spring 서버가 뜰 때 JpaRepository 인터페이스를 상속받은 인터페이스가 자동으로 스캔이 되면, 해당 인터페이스의 정보를 토대로 자동으로 SimpleJpaRepository 클래스를 생성해 주고, 이 클래스를 Spring ‘Bean’으로 등록합니다.
  • 따라서 인터페이스의 구현 클래스를 직접 작성하지 않아도 JpaRepository 인터페이스를 통해 JPA의 기능을 사용할 수 있습니다.

Spring Data JPA 사용방법

Jpa Repository 등록

public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}
  • JpaRepository<"@Entity 클래스", "@Id 의 데이터 타입">를 상속받는 interface 로 선언합니다.
    • Spring Data JPA에 의해 자동으로 Bean 등록이 되었습니다.
    • 제네릭의 @Entity 클래스 위치에 User Entity를 추가했기 때문에 해당 UserRepository는 DB의 user 테이블과 연결되어 CRUD 작업을 처리하는 인터페이스가 되었습니다.

Query Methods

  • Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공합니다.

  • JpaRepository 인터페이스에서 해당 인터페이스와 매핑되어있는 테이블에 요청하고자하는 SQL을 메서드 이름을 사용하여 선언할 수 있습니다.

  • SimpleJpaRepository 클래스가 생성될 때 위처럼 직접 선언한 JpaRepository 인터페이스의 모든 메서드를 자동으로 구현해줍니다.

    • JpaRepository 인터페이스의 메서드 즉, Query Methods는 개발자가 이미 정의 되어있는 규칙에 맞게 메서드를 선언하면 해당 메서드 이름을 분석하여 SimpleJpaRepository에서 구현이 됩니다.
    • 따라서 우리는 인터페이스에 필요한 SQL에 해당하는 메서드 이름 패턴으로 메서드를 선언 하기만 하면 따로 구현하지 않아도 사용할 수 있습니다.

예시

  • findAllByOrderByModifiedAtDesc 해당 메서드 이름은 Memo 테이블에서 ModifiedAt 즉, 수정 시간을 기준으로 전체 데이터를 내림차순으로 가져오는 SQL을 실행하는 메서드를 생성할 수 있습니다.
  • List<Memo> findAllByUsername(String username);
    • 이렇게 Query Method를 선언했을 경우 ByUsername 에 값을 전달해줘야하기 때문에 파라미터에 해당 값의 타입과 변수명을 선언해줍니다.
    • 즉, Query Methods 는 메서드의 파라미터를 통해 SQL에 필요한 값을 동적으로 받아 처리할 수 있습니다.
profile
BackEnd Developer!!

0개의 댓글