일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- json
- 최종 프로젝트
- Filter
- spring서버
- 빈생성안됨
- @IdClass
- Q 클래스
- 스프링 부트 기능
- git
- 인텔리제이
- jpa에러
- Error creating bean with name
- JoinColumn
- Unsatisfied dependency
- json gson 차이
- 스프링부트오류
- github
- Spring Spring boot 차이
- uncheck Exception
- REST란
- JPA주의사항
- 복합키
- JPA
- queryDSL
- jwt메서드
- ERD 작성
- 1차캐시
- REST API 규칙
- 스프링 부트 공식 문서
- jpa회원가입
- Today
- Total
Everyday Dev System
SimpleJpaRepostory 내부 뜯어보기 본문
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
'나의 호기심' 카테고리의 다른 글
QueryDSL에서 Q 클래스는 어디에 위치해있을까? (0) | 2023.08.01 |
---|---|
AWS의 ELB, ALB, CLB, NLB 란? (0) | 2023.07.28 |
JPA의 엔티티는 왜 기본 생성자가 있어야 할까? (0) | 2023.07.18 |
HttpHeaders는 MultiValueMap의 구현체이다? (0) | 2023.07.11 |
스프링 부트에서 MockMvc를 사용하여 HTTP API 테스트하기 (0) | 2023.07.10 |