Spring/Spring Data JPA

스프링 데이터 JPA 맛보기

민철킹 2021. 6. 7. 22:16

Repository 인터페이스를 만들고 JpaRepository를 상속받아 사용한다. 

상속 관계를 다이어그램으로 살펴보면 위와 같고 JpaRepository를 상속받으므로써 이미 구현되어있는 save(), findAll() 등과 같은 필요한 거의 모든 메서드를 바로 사용할 수 있다.

스프링 데이터 JPA는 JpaRepository 라는 인터페이스를 제공하는데, 여기에 기본적인 CRUD 기능이 모두 제공된다. (일반적으로 상상할 수 있는 모든 기능이 다 포함되어 있다.)

 

하지만 interface이기 때문에 구현체가 필요한거 아니야??

구현체도 스프링 데이터 JPA가 알아서 만들고 주입해준다.

 

위와 같은 메서드는 모두 필요없어진다.

 

 

 

findByName은 공통할 수 없으므로 JpaRepository에서 제공하는 메서드가 아니다. 따라서 interface에 구현해줘야함.

 

원래라면 interface를 작성하고 로직을 구현해주어야하지만, 스프링 데이터 JPA를 사용하게 되면 위와 같은 선언만으로도 모든 것이 해결된다. (???????????????)

 

스프링 데이터 JPA는 findBy~~~의 형태를 보고 findByName에서 name을 추출한다. 그 후 select m from member m where m.name = :name와 같은 쿼리를 날려 알아서 조회 로직을 만들어준다.

 

즉, 개발자는 인터페이스만 구현하면 되는 것이다. 하지만, 스프링 데이터 JPA는 JPA를 사용해서 이런 기능을 제공할 뿐이다.(인터페이스일 뿐이다.) 결국 JPA 자체를 잘 이해하는 것이 가장 중요하다. 

 

https://spring.io/projects/spring-data-jpa

 

Spring Data JPA

Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered applications that use dat

spring.io

 

반응형

'Spring > Spring Data JPA' 카테고리의 다른 글

@EntityGraph  (0) 2021.06.14
벌크성 수정 쿼리  (0) 2021.06.14
페이징과 정렬  (0) 2021.06.13
쿼리 메서드 기능  (0) 2021.06.11
Spring Data JPA 공통 인터페이스  (0) 2021.06.10