Chapter 11 - 웹 애플리케이션 제작
Chapter 12 - 스프링 DATA JPA
Spring Data JPA 소개
- 스프링 프레임워크에서 JPA 편리하게 사용할 수 있도록 지원하는 프로젝트
- 이 프로젝트는 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결한다.
- CRUD를 처리하기 위한 공통 인터페이스를 제공해 리포지토리 개발 시 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해 주입해준다.
⇒ 구현 클래스 없이 인터페이스만 작성해도 개발 완료 가능하다.
findByUserName()
과 같이 직접 작성한 공통으로 처리할 수 없는 메서드는 스프링 데이터 JPA는 메서드 이름을 분석해서 JPQL을 실행한다.
- select m from Member m where username =:username
공통 인터페이스 기능
- 스프링 데이터 jpa는 간단한 crud기능을 공통으로 처리하는 JpaRepository 인터페이스를 제공한다.
- 스프링 데이터 jpa를 사용하는 가장 단순한 방법은 이 인터페이스를 상속받는 것이다.
쿼리 메서드 기능
- JPA가 제공하는 마법같은 기능.
- 메서드 이름만으로 쿼리를 생성하는 기능.
- 인터페이스에 메서드만 선언하면 해당 메서드의 이름으로 적절한 JPQL 쿼리 생성해서 실행한다.
- 스프링 데이터 jpa가 제공하는 쿼리 메서드 기능
- 메서드 이름으로 쿼리 생성
- 메서드 이름으로 JPA NamedQuery 호출
- @Query 어노테이션 사용해서 리포지토리 인터페이스에 쿼리 직접 정의
findByEmailAndName(String email, String name)
→ 데이터 JPA는 메서드 이름 분석해서 JPQL을 생성하고 실행한다. 생성된 JPQL은 다음과 같다
- 규칙에 따라 메서드 이름 지어야 한다.
따라서 엔티티의 필드명이 변경되면 인터페이스에 정의한 메서드 이름도 꼭 함께 변경해야 한다.
그렇지 않으면 애플리케이션 시작 시점에 오류가 발생한다.