@Test
void transactionalEntityEqualsTest() {
Member member = new Member("테스트", null);
em.persist(member);
Member member1 = memberRepository.findById(member.getId())
.orElseThrow();
System.out.println("member1 = " + member1);
System.out.println("member1 == member = " + (member1 == member));
System.out.println("member1.equals(member) = " + member1.equals(member));
}
member1 = Member(id=3, name=테스트)
member1 == member = true
member1.equals(member) = true
- 엔티티 비교 결과
- 같은 트랜잭션 범위와 영속성 컨텍스트 안에서 저장한 엔티티와 조회된 엔티티가 같은 인스턴스이다.
- 일단 영속성 컨텍스트가 같은 경우 세 가지를 만족한다고 함.
- 동일성 비교
- 객체의 참조주소 비교
- 동등성 비교
equals
로서 비교가 같은지
- 데이터베이스의 동등성
@Id
로 지정된 DB의 식별자가 같은 경우
- 동일성 비교
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[JPA] 예외 처리 및 JPA 표준 예외 정리 (0) | 2023.11.19 |
---|---|
[JPA] 트랜잭션 롤백 시 주의 해야할 점! (0) | 2023.11.19 |
[JPA 갑자기 궁금증 해결] DataJpa 에서 save 내부 동작 방식 (0) | 2023.11.19 |
[JPA] 영속성 컨텍스트가 다를때의 비교 (0) | 2023.11.19 |
[JPA] 프록시의 동등성 비교법 (0) | 2023.11.19 |