equals(), hashCode()

왕감자·2025년 2월 18일

2025 내일배움캠프

목록 보기
15/39
  • equals(), hashCode()
    • Java의 Object 클래스에서 제공하는 메서드
    • 엔티티 클래스에서 오버라이드하여 사용하는 경우가 많음

@EqualsAndHashCode(onlyExplicitlyIncluded = true)

equals()

  • Object 클래스에서는 메모리 주소(참조값) 비교
  • 엔티티 에서는 @id 또는 비지니스 키를 기준으로 논리적 동등성 정의

hashCode()

  • 객체를 해시값(정수값)으로 변환
  • equals()를 오버라이드 했다면 반드시 hashCode()도 오버라이드 해야함

🤔 엔티티에서 왜 필요할까?

  • equals()hashCode()를 적절히 구현하지 않으면 중복된 데이터 발생하거나 컬렉션에서 객체를 찾지 못함
    - 엔티티를 Set에 넣었는데 동일한 엔티티가 중복 저장됨
    - findById()로 가져온 객체와 직접 생성한 엔티티가 equals() 비교에서 다르게 판정
    - JPA가 엔티티 변경을 감지하지 못함

0개의 댓글