-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
jpa repository.save 메서드 구현 코드를 보고 싶습니다
23.03.23 06:57 작성 23.03.23 07:34 수정 조회수 132
1
강사님 안녕하세요~
회사에서
jpa 사용하면서 깊이 생각 안하고 사용하다가
궁금한점이 생겼습니다
특정 리포지토리가 있다고 가정하겠습니다
@Repository
public interface 리포지토리 extends JpaRepository<도메인, Long>, JpaSpecificationExecutor<도메인> {
리포지토리.save();
하면 스프링프레임웍 하이버네이트 구현체가 실행해준다고 하는데
저는 실제 프레임웍 구현체 소스 코드를 보고 싶습니다
제가 IDE 이클립스를 사용중인데 어디라이브러리나
소스 코드를 보면 될까요
리포지토리.save() -> █이메서드를 클릭하면
org.springframework.data.repository.CrudRepository 다시 인터페이스이고
@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S entity);
=> █ CrudRepository 인터페이스의 save 메서드를 구현코드는
또 어느라이브러리에 어떤 메서드를 확인하면 될까요?
*.스프링, 스프링부트 강의 수강하며 계속 반복되는 얘기가
유연하게 적용하기위해 많은 인터페이스를 사용하고
구현체가 있다고 계속 얘기되는데
그럼 그런 구현체를 최 하위의 클래스 메서드를 보는 방법이 어떻게 되는지 궁금하네요..
*.추가적으로 소스코드에는
리포지토리.save(); =>인터페이스.save();
인터페이스.메서드 를 호출했는데
스프링 프레임웍에서 어떤 원리로
인터페이스.메서드 => 구현체클래스.메서드가 호출되는지
이해가 가지 않습니다
바쁘시겠지만 시간 나실때 답변 주시면 감사하겠습니다
수고하세요..
#JPA
#구현체
#하이버네이트
#hibernate
답변을 작성해보세요.
0
y2gcoder
23.03.23 08:53
안녕하세요, 김동희 님. 공식 서포터즈 y2gcoder 입니다.
org.springframework.data.jpa.repository.support.SimpleJpaRepository의 save() 메서드를 보시겠습니까?
내부에서는 저희가 본 강의에서 배우는 EntityManager를 이용하고 있는 모습을 보실 수 있습니다.
감사합니다.
김동희
질문자23.03.23 12:39
y2coder 님 감사합니다~
혹시
*.추가적으로 소스코드에는
리포지토리.save(); =>인터페이스.save();
인터페이스.메서드 를 호출했는데
스프링 프레임웍에서 어떤 원리로
인터페이스.메서드 => 구현체클래스.메서드가 호출되는지
이해가 가지 않습니다
====> 이 부분에 대해서도 여쭤봐도 될까요?
y2gcoder
23.03.23 12:48
해당 부분은 스프링에서 컨테이너를 올려 빈을 등록할 때,
저희가 만든 JpaRepository를 상속한 Repository 인터페이스를 찾은 뒤 해당 인터페이스를 기반으로 SimpleJpaRepository 같은 실제 구현체를 동적으로 만들어 작동합니다.
답변 1