스프링 데이터 JPA

jooog·2022년 7월 17일
0

스프링DB

목록 보기
13/13

스프링 데이터 JPA 주요 기능

스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리다. 'JpaRepository' 인터페이스를 통해서 기본적인 CRUD 기능을 제공하며 공통화가 가능한 기능을 모두 포함하고 있다. 다양한 기능을 제공하지만 그 중에서도 핵심은 공통 인터페이스 기능쿼리 메서드 기능이다.

JpaRepository 사용

스프링 데이터 JPA가 제공하는 기능을 사용하려면 'JpaRepository' 인터페이스를 상속받아야한다. 'JpaRepository' 인터페이스를 자세히 살펴보면 다양한 기능을 제공하는 것을 확인할 수 있다.

기본적인 CRUD 기능부터 다양한 기능을 제공한다.

JpaRepository를 사용하려면 JpaRepository 인터페이스를 상속받고 제네릭에 관리할 <엔티티, 엔티티ID> 를 주면 된다. 이렇게 JpaRepository 인터페이스만 상속받으면 스프링 데이터 JPA가 프록시 기술을 통해서 구현 클래스를 만들주기 때문에 개발자는 구현클래스를 따로 작성하지 않아도 기본적인 CRUD 기능을 모두 사용할 수 있다.

쿼리 메서드 기능

스프링 데이터 JPA는 인터페이스에 메서드만 적어주면 메서드 이름을 분석해서 자동으로 쿼리를 만들고 실행한다.

public interface MemberRepository extends JpaRepository<Member, Long> {
 List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}

하지만 따라야할 규칙이 있으며 조회, COUNT, 삭제 등의 기능을 수행할 때는 일정한 규칙에 따라서 메서드 이름을 지정해주어야 한다. 스프링 공식문서에서 다양한 규칙을 확인할 수 있다.

쿼리 메서드 기능 대신 직접 JPQL을 작성하고 싶을때는 @Query를 사용해서 직접 JPQL을 작성하면 된다.

public interface SpringDataJpaItemRepository extends JpaRepository<Item, Long>
{
 //쿼리 메서드 기능
 List<Item> findByItemNameLike(String itemName);
 
 //쿼리 직접 실행
 @Query("select i from Item i where i.itemName like :itemName and i.price 
<= :price")

 List<Item> findItems(@Param("itemName") String itemName, @Param("price")
Integer price);
}

이 글은 김영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의를 듣고 정리한 내용입니다.

0개의 댓글