인프런 - 실전! 스프링 데이터 JPA


순수 JPA 기반 리포지토리 만들기

MemberjpaRepository.java

  • delete 함수 추가 

  • findAll 함수 추가 

  • Optional find 함수 추가

  • count 함수 추가

 

TeamRepository.java

  • JPA의 자동 변경 감지기능으로 인해, update 함수가 필요 없음

 

  • 테스트

반복적인 CRUD 의 발생


공통 인터페이스 설정

java config 설정

  • 스프링 부트 사용 시, 생략 가능
  • 만약 위치가 달리진다면 @EnableJpaRepositories 필요

Spring data jpa가 인터페이스를 보고 구현 클래스를 만들어서 Injection 받아 사용

  • 실제 출력 시 : memberRepository.getClass() class com.sun.proxy.$ProxyXXX
  • @Repository 애노테이션 생략 가능


공통 인터페이스 적용

  public interface TeamRepository extends JpaRepository<ENTITY, PKTYPE> {
  }

테스트


공통 인터페이스 분석

주요 메서드

  • save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.
  • delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출
  • findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출
  • getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출
  • findAll(…) : 모든 엔티티를 조회한다. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다.                   

+ Recent posts