[JPA] 영속성 컨텍스트가 같을 때의 엔티티의 비

@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
  • 엔티티 비교 결과
    • 같은 트랜잭션 범위와 영속성 컨텍스트 안에서 저장한 엔티티와 조회된 엔티티가 같은 인스턴스이다.
    • 일단 영속성 컨텍스트가 같은 경우 세 가지를 만족한다고 함.
      1. 동일성 비교
        1. 객체의 참조주소 비교
      1. 동등성 비교
        1. equals 로서 비교가 같은지
      1. 데이터베이스의 동등성
        1. @Id 로 지정된 DB의 식별자가 같은 경우


Uploaded by N2T