Data Access Object 역할을 하는 Repository를 만들 수 있다.
예전에는 아래와 같이 Repository를 만들어 사용했었다.
그러나, 이렇게 하면 테스트 코드도 작성해야하고, 여러 번거로움이 많다.
Spring data JPA는 repository를 오직 interface로 개발할 수 있다. @Repository 애노테이션도 붙여줄 필요가 없다.
실행 하는 것도 entityManager를 써서 복잡하게 했던 것을 쉽게 할 수 있다. 기본적인 CRUD는 모두 제공한다.
원래 Spring boot가 아니고 그냥 spring이라면, 메인 애플리케이션에 @EnableJpaRepositories
애노테이션을 붙여줘야한다. 그 내부의 JpaRepositoriesRegistrar
에 의해 만들어준 repository를 사용할 수 있게 되는 것이다.
우리가 임의로 만들어준 repository(JpaRepository를 상속받은)들은 프로그래밍을 통해, Bean으로 등록된다.
내부적으로는 ImportBeanDefinitionReistrar 인터페이스 구현체에 의해 Bean으로 등록되는 프로그래밍이 복잡하게 이뤄지는 것이다.
따라서 JpaRepository를 상속받으면 Bean으로 등록되므로, 우리가 주입받아서 사용할 수 있는 것이다.