Spring Data Jpa를 사용하면 JpaRepository를 상속받아 쓸 수 있다.
이렇게 하면 간편하게 이미 만들어진 기능을 쉽게 사용 가능하다.
그런데 JpaRepository를 상속받지 않는 것에 대한 이유를 읽어 정리해보자고 한다.
명령 모델이란? -> CQRS 참고..
1.단위 테스트에서 리포지토리의 대역은 가짜 대역을 사용
2.JpaRepository에 메서드가 너무 많음
public MemoryRepository implemets UserRepository {
약 20여개의 메서드를 overide해 구현해야 한다.
}
마찬가지로 JpaRepository 상속 x. save(), delete() 같은 메서드가 있다는게 이상함.따라서 Repository를 상속하고 필요한 메서드를 그때그때 추가
조회 모델 구현 (이는 어디까지나 선택)
JpaRepository를 상속하면 편하지만 단위 테스트에서 가짜 구현을 만들기 어렵고, CQRS에는 맞지 않다. 그래서 Repository를 상속하고 필요한 메서드만 추가.
'
이런식으로 Repository를 상속받아 구현하면, 원하는 기능들만 넣어줄 수 있다. CRUD 관련해서 실제로 사용할때도 쓰지 않는 기능들을 막을 수 있고, CQRS 구현에 있어서 JpaRepository를 상속받는 것 보다는 이런식으로 하는 것이 테스트, 필요하지 않는 메서드의 오용을 막을 수 있다.