나의 호기심

SimpleJpaRepostory 내부 뜯어보기

chaeyoung- 2023. 7. 26. 00:51

 

 

1. Spring Data JPA

  • JPA를 쓰기 편하게 만들어놓은 모듈이다.

→ 위와 같이 Repository 인터페이스가 Spring Data JPA 내부에 존재한다.

 

 

 

위와 같이 JpaRepository는 ListCrudRepository를 상속하고,

ListCrudRepository는 CrudRepository를 상속하고,

CrudRepository는 Repository를 상속한다.

 

상속 관계 : Repository > CrudRepository > ListCrudRepository > JpaRepository

 

 

 

 

예를 들어, Repository 인터페이스의 기본 구현체인 SimpleJpaRepository의 코드를 보자.

SimpleJpaRepository는 JpaRepositoryImplementation를 상속하고,
JpaRepositoryImplementation는 JpaRepository를 상속한다.

 

 

아래와 같이 내부적으로 EntityManager을 사용하고 있는 것을 볼 수 있다.

 

CrudRepository 인터페이스 내에 선언되어 있는 save(), delete(), findById() 등을

SimpleJpaRepository에서 구현하여 사용할 수 있는 것이다.

 

또한,

Repository 인터페이스를 구현한 구현체인 SimpleJpaRepository 내에 @Repostiory

어노테이션이 달려있기 때문에 스프링 내부에 Bean으로 수동 등록된다.

 

그렇기 때문에 JpaRepository를 상속하여 구현한 PostRepository를 

빈으로 자동 등록되고, 이를 통해 위에 메서드들을 사용할 수 있다.

 

 

 

JpaRepository나 CrudRepository가 아닌 Repository를 상속해서 더 깔끔한 시스템 설계를 만들 수 있다.

 

 


reference : 

https://jaehoney.tistory.com/250

 

Spring - JpaRepository가 아닌 Repository를 사용해야 하는 이유!

Spring Data JPA를 사용하면 일반적으로 Repository에서 다음의 인터페이스 중 하나를 상속하여 사용하게 된다. JpaRepository CrudRepository Repository 해당 인터페이스들은 어떤 부분이 다르며 Repository를 사용

jaehoney.tistory.com