실전! 스프링 데이터 JPA

Ch02. 공통 인터페이스 기능 - 공통 인터페이스 설정

webmaster 2021. 12. 25. 15:49
728x90

JavaConfig 설정- 스프링 부트 사용 시 생략 가능

SpringBoot를 사용하면 @EnableJpaRepositories 어노테이션 생략 가능

SpringDataJPA가 구현 클래스 대신 생성

개발자가 구현한 것이 없는데 대체 주업되는 것은 무엇일까?

SpringDataJpa가 구현클래스를 생성해준다
어떤것이 주입되는지 알 수 없다.
프록시 객체가 주입된다.

System.out.println("memberRepository = "+memberRepository.getClass());
  • interface를 보고 SpringDataJpa가 만들어 주입시킨다.
  • org.springframework.data.repository.Repository를 구현한 클래스는 스캔 대상
    • MemberRepository 인터페이스가 동작한 이유
    • 실제 출력해보기(Proxy)
    • memberRepository.getClass() class com.sun.proxy.$ProxyXXX
  • @Repository 애노테이션 생략 가능
    • 컴포넌트 스캔을 스프링 데이터 JPA가 자동으로 처리
    • JPA 예외를 스프링 예외로 변환하는 과정도 자동으로 처리

공통 인터페이스 적용

순수 JPA에서 동작하던 기능들을 SpringData JPA에서 동작시켜보자.

  • 기존 순수 JPA 기반 테스트에서 사용했던 코드를 그대로 SpringDataJPA Repository 기반 테스트로 변경해도 동일한 방식으로 동작
728x90