dev/spring data JPA
JpaRepository의 정체
dev_0hoon
2024. 3. 5. 15:42
System.out.println("memberRepository = " + memberRepository.getClass());
log
memberRepository = class jdk.proxy2.$Proxy123
jpaRepository를 extends한 repository를 로그에 찍어봤다. 정체는 프록시였는데,
스프링jpa가 인터페이스를 보고 구현체를 꼿아버린거다. 구현체를 스프링 JPA가 만들어주기 때문에 인터페이스 만으로 메소드를 다 사용이 가능한 것이다.


제네릭 타입
- T : 엔티티
- ID : 엔티티의 식별자 타입
- S : 엔티티와 그 자식 타입
주요 메서드
- save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.
- delete(T) : 엔티티 하나를 삭제한다. 내부에서 'EntityMananger. remove()' 호출
- findById(ID) : 엔티티 하나를 조회한다. 내부에서 'EntityManager.find()' 호출
- getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 'EntityManager.getReference()' 호출
- FindAll(...) : 모든 엔티티를 조회한다 . 정렬('sort')이나 페이징('Pageable') 조건을 파라미터로 제공할 수 있다.