inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

jpa repository.save 메서드 구현 코드를 보고 싶습니다

859

주아아빠

작성한 질문수 33

2

강사님 안녕하세요~

 

회사에서

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

 

java jpa

답변 1

0

y2gcoder

안녕하세요, 김동희 님. 공식 서포터즈 y2gcoder 입니다.

org.springframework.data.jpa.repository.support.SimpleJpaRepository의 save() 메서드를 보시겠습니까?

image

내부에서는 저희가 본 강의에서 배우는 EntityManager를 이용하고 있는 모습을 보실 수 있습니다.

감사합니다.

0

주아아빠

y2coder 님 감사합니다~

혹시

*.추가적으로 소스코드에는

리포지토리.save(); =>인터페이스.save();

인터페이스.메서드 를 호출했는데

스프링 프레임웍에서 어떤 원리로

인터페이스.메서드 => 구현체클래스.메서드가 호출되는지

이해가 가지 않습니다

====> 이 부분에 대해서도 여쭤봐도 될까요?

2

y2gcoder

해당 부분은 스프링에서 컨테이너를 올려 빈을 등록할 때,
저희가 만든 JpaRepository를 상속한 Repository 인터페이스를 찾은 뒤 해당 인터페이스를 기반으로 SimpleJpaRepository 같은 실제 구현체를 동적으로 만들어 작동합니다.

1

주아아빠

y2coder 님 감사합니다

다시 소스 보도록 하겠습니다

image

0

y2gcoder

파이팅입니다!

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

28

2

inheritance startegy 선택시 고려사항

0

22

1

Entity 동등성 비교

0

21

1

실무 조언 관련 질문입니다.

0

47

1

H2데이터베이스 파일 생성

0

56

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

53

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

52

1

JPQL 메소드와 락

0

55

1

Delivery @OneToOne

0

60

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

94

2

UnsupportedOperationException 발생

0

86

3

H2 Database 연결이 안됩니다.

0

95

2

연관관계 매핑 질문드립니다.

0

85

2

h2데이터베이스 실행오류

0

108

2

persistence.xml

0

108

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

80

1

영속성 컨텍스트

0

66

1

JPA 프록시

0

96

1

Native Query와 MyBatis

0

70

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

87

1

임베디드 타입 예시 코드 관련 질문

0

115

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

95

3

인텔리제이 패키지 커서 단축키 질문

0

108

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

145

1