기존 JPA의 Repository
- 기존에 JPA만 사용할 때 Repository를 작성하면 다음과 같이 작성했다.
- 기능 자체에는 문제가 없지만 개발하는 서비스의 수가 많아지다 보면 그만큼 동일한 유형의 코드가 많이 반복되게 된다.
JpaRepository?
- 기존 JPA만 사용할 때 Repository를 만들 때 비슷한 유형의 코드들이 반복되는 것을 막고자 Spring Data JPA는 JpaRepository라는 인터페이스를 만들어냈다.
- 해당 인터페이스는 Spring Data JPA에서 기본적으로 제공하는 기능으로 JpaRepository를 상속받은 인터페이스를 사용한다면 기존에 반복되는 유형의 코드들을 생성하지 않아도 된다.
- 이전 문단의 예시는 다음과 같이 줄일 수 있다.
- 왜 작업할 게 이것밖에 없지 의문이 들 수 있지만 정말 이게 끝이다.
- 실제로 아래 코드로 테스트를 돌려보면 정상적으로 동작한다.
제네릭 타입
주요 메소드
- save(S)
- 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.
- delete(T)
- 엔티티 하나를 삭제한다.
- 내부에서 EntityManager.remove()를 호출한다.
- findById(ID)
- 엔티티 하나를 조회한다.
- 내부에서 EntityManager.find()를 호출한다.
- getOne(ID)
- 엔티티를 프록시로 조회한다.
- 내부에서 EntityManager.getReference()를 호출한다.
- findAll(…)
- 모든 엔티티를 조회한다.
- 정렬이나 페이징 조건을 파라미터로 제공할 수 있다.
매우 다양한 기능
- 위에 소개한 메소드말고도 기본적인 CRUD 관련 기능에 Flush 기능도 있다.
출처