작성한 질문수
자바 ORM 표준 JPA 프로그래밍 - 기본편
임베디드 타입
작성
·
438
1
안녕하세요 영한님
책 261P 을 보다가 궁금점이 생겨서 질문드립니다.
1.영속성 컨텍스트는 엔티티의 식별자를 키로 사용해서 엔티티를 관리한다 .
2.그리고 식별자를 비교할 때 equals()와 hashCode()를 사용한다.....
따라서 복합 키는 equals와 hashCode를 필수로 구현해야한다.
1 , 2 내용은 복합 키가 아닐때에도 적용되지않나요 ?
왜' 복합 키' 일때만 필수로 구현을 해야할까요 ??
이
답변 1
2
안녕하세요. zpzp627123님
해당 내용은 ID 클래스에 equals, hashCode를 구현해야 한다는 뜻입니다.
이것을 구현하지 않으면 값이 같아도 equals에서 비교시 실패할 수 있습니다.
식별자가 다른 것 처럼 인식되는 큰 문제가 발생하는 것이지요.
복합 키가 아닌 Long 같은 일반 타입들은 내부에 equals, hashCode가 이미 구현되어서 값이 같으면 같음을 보장합니다.
감사합니다.