정사각형 - 직사각형은 is-a 관계가 아니지만 객체관계에서는 is-a 관계로 표현해야한다. K가 말한 이 예시가 매우 적절한 예시였다.
extends JpaRepository 하지말고, save, findById, findAll만 사용한다면 그것만 인터페이스에 적는다. JpaProductRepository를 따로 만든다음
public interface JpaProductRepository extends ProductRepository, JpaProductRepository<Product, UUID> {
}
우선 FakeRepositry로 개발하고, 마지막에 그것을 test로 옮기면 테스트 코드 작성하기에도 용이하다.
이렇게 하먼 테스트에서 mockito로 레파지토리를 일일이 정의할 필요없이 그냥 FakeRepository를 그대로 사용 가능하다. Mockito는 리플랙션을 쓰기떄문에 성능도 많이 느린데 비해 FakeRepository를 사용하면 성능면에서도 유리하다.