스프링데이터JPA의 철학은 개발자가 작성한 리포지토리 인터페이스를 토대로 그 구현체를 자동생성하여 전달함에 있다. 그러나 스프링데이터JPA가 자동생성할 수 있는 구현체 로직은 JPA에 국한되어 있다. 동적쿼리를 위한 QueryDSL을 사용하거나 JPA가 아닌 MyBatis를 사용하거나 Spring JDBC Template을 사용하는 등의 스프링데이터JPA가 지원할 수 없는 로직을 담은 리포지토리 구현체는 자동생성 할 수 없다. 이런 경우, 개발자가 구현체를 직접 구현해야 한다. 스프링데이터JPA는 개발자가 구현한 구현체를 토대로 구현체 객체를 프록시로 자동생성하여 Bean으로 제공한다. 예를 들어보자. 개발자가 MemberRepository 인터페이스를 작성하고 JpaRepository를 상속하면 스프링..