inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

새로운 엔티티를 구별하는 방법

isNew() 메서드의 구현체 문의

해결된 질문

418

동해물과백두산이마르고닳도록

작성한 질문수 27

0

안녕하세요! isNew() 메서드의 구현체가 정확히 무엇인지 확인하고 싶어 질문드립니다!

SimpleJpaRepository의 save() 메서드 내부에서 isNew() 메서드가 호출될 때,

if (entityInformation.isNew(entity)) {


처럼 호출되는데요, 이 때 isNew 가

org.springframework.data.repository.core.EntityInformation 인터페이스의 추상 메서드인 것을 확인했습니다.

그런데 이 isNew 의 구현체가 여러개라서 하나씩 확인해보니 강의에서 설명해주신 내용이

추상 클래스 org.springframework.data.repository.core.support.AbstractEntityInformation 에 구현된 내용과 같더라고요.

// AbstractEntityInformation.isNew()
public boolean isNew(T entity) {

   ID id = getId(entity);
   Class<ID> idType = getIdType();

   if (!idType.isPrimitive()) {
      return id == null;
   }

   if (id instanceof Number) {
      return ((Number) id).longValue() == 0L;
   }

   throw new IllegalArgumentException(String.format("Unsupported primitive id type %s", idType));
}


그런데 AbstractEntityInformation 역시 추상 클래스이다 보니 정확한 구현체를 찾기가 힘든 상태입니다.

질문) SimpleJpaRepository의 save() 내부에서 사용되는 isNew() 의 구현체는 정확히 어떤 클래스인가요? 또, 이러한 구현체가 정확히 무엇인지 알 수 있는 방법이 있을까요?

확인해주셔서 감사합니다. :D

 

java spring spring-boot jpa

답변 1

2

David

안녕하세요. haero77님, 공식 서포터즈 David입니다.

아래 가이드를 따라 디버깅 해보시면 구현체를 바로 확인하실 수 있으니 참고해 주세요:)

  1. 엔티티를 저장하는 코드를 작성

  2. save 내 isNew에 브레이크 포인트를 표시

  3. 디버그 모드로 애플리케이션을 실행

감사합니다.

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

70

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

107

3

MemberRepository 구현체

0

58

1

pdf 표현 질문드립니다.

0

62

1

로그가 남지 않는 문제.

0

81

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

70

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

72

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

91

2

Sort 인터페이스는 잘 사용 안하나요?

0

52

1

스캔대상 질문드립니다.

0

46

1

하이버네이트6에서의 최적화에 이은 질문

0

85

1

save() vs saveAndFlush DB 통신 횟수

0

54

1

순수 JPA 리포지토리 코드 수정부분

0

86

2

bulk연산 후 flush하는 이유를 모르겠어요

0

152

3

bulk insert 질문입니다.

0

178

2

교만했던 것 같아요.

0

147

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

147

2

동적 테이블에 대한 질문

0

86

1

영속성 전이와 연관관계

0

130

2

강의 10:25 질문

0

74

1

단건 update 질문

0

95

2

엔티티 와 도메인의 경계

0

127

1

UsernameOnlyDto 타입 type mismatch 오류

0

119

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

136

1