실전! 스프링 부트와 JPA 활용2(API 개발과 성능 최적화)

Ch06. SpringDataJPA,QueryDSL 맛보기 - 스프링 데이터 JPA 소개

webmaster 2021. 12. 23. 21:40
728x90

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

 

Spring Data

Spring Data is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio, a BOM (Bill of Materials - see this example) is published with a curated set of dependencies on the individual pr

spring.io

  • 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드를 자동화해준다.
  • 이미 라이브러리는 포함되어 있다. 기존의 MemberRepository 를 스프링 데이터 JPA로 변경해보자.

SpringDataJPA

@Repository
@RequiredArgsConstructor
public class MemberRepository {
    private final EntityManager em;
    public void save(Member member){
        em.persist(member);
    }
    public Member findOne(Long id){
        return em.find(Member.class,id);
    }
    public List<Member> findAll(){
        return em.createQuery("select m from Member m",Member.class).getResultList();
    }
    public List<Member> findByName(String name){
        return em.createQuery("select m from Member m where m.name = :name",Member.class)
                .setParameter("name", name)
                .getResultList();
    }
}

 

스프링 데이터 JPA로 구현한 Repository

  • 스프링 데이터 JPA는 JpaRepository라는 인터페이스를 제공하는데, 여기에 기본적인 CRUD 기능이 모두 제공된다. (일반적으로 상상할 수 있는 모든 기능이 다 포함되어 있다.)
  • findByName처럼 일반화하기 어려운 기능도 메서드 이름으로 정확한 JPQL 쿼리를 실행한다.
    • select m from Member m where m.name = :name
  • 개발자는 인터페이스만 만들면 된다. 구현체는 스프링 데이터 JPA가 애플리케이션 실행 시점에 주입해준다.
  • 스프링 데이터 JPA는 스프링과 JPA를 활용해서 애플리케이션을 만들때 정말 편리한 기능을 많이 제공한다. 단순히 편리함을 넘어서 때로는 마법을 부리는 것 같을 정도로 놀라운 개발 생산성의 세계로 우리를 이끌어 준다. 하지만 스프링 데이터 JPA는 JPA를 사용해서 이런 기능을 제공할 뿐이다. 결국 JPA 자체를 잘 이해하는 것이 가장 중요하다.
728x90