출처:
1. https://jaehoney.tistory.com/250
2. https://creampuffy.tistory.com/179
먼저 Spring Data JPA 란?
Spring에서 Data를 다루는 JPA를 쉽게 사용하게 해주기 위해 제공되는 몇가지 Interface들이 존재한다.
아래의 그림은 Spring Data JPA 에서 제공하는 인터페이스 사이의 상속관계를 정리한 것이다.

그림에서 아래로 갈 수록 더 많은 기능이 구현된 모듈들이다.
public interface UserAccountRepository extends JpaRepository<UserAccount, Long> {
}
JpaRepository의 경우 메서드를 정의하지 않아도 아래와 같이 많은 기능들을 사용 할 수 있다.

하지만 만약 우리가 작성하는 프로그램에, 현재 비즈니스 로직에 delete 로직이 필요없음에도 JpaRepository나 CrudRepository를 사용해야 할까?
그렇지 않다.
주어진 인터페이스들은 우리들의 편의성을 위해 Spring에서 제공하는 인터페이스들이다.
만약 내가 정의한 내용들만 내 서비스 로직에서 사용하고 싶다면, 단순하게 Repository를 extends 해주면 된다. 그러곤 원하는 메소드만 정의 해주면 된다.
public interface UserAccountRepository extends Repository<UserAccount, Long> {
List<UserAccount> findAll();
}

이 보다 더 자세하게 알고싶다면 출처에 내용을 확인해보면 될 것 같다.
해당 게시글은 사용 방법과 간략한 이유들만 정의하기로 한다.