모든 JPA Entity들은 hibernate 구현체를 사용하는 기준으로 설명하자면
기본 생성자를 가지고 있어야한다.
동등성 검사하기 위해서 각 필드가 모두 맞는지 검사할 필요는 없다
객체와 객체를 비교할 때 생성시간, 일자, 제목, 본문이 다 같아도 id를 비교하면 되므로
id만 검사하게 만들어 perfomence를 극대화 할 수 있다.
그리고 id는 Not NUll이어야 하므로 check 해준다.
동일성(Identity) 비교는 == 를 통해 메모리 내 주소값이 같은지 비교하는 것입니다.
동등성(Equality) 비교는 equals() & hashCode() 를 통해 논리적 지위가 같은지 비교하는 것입니다.
논리적 지위가 같다의 기준은 개발자가 요구사항에 맞게 오버라이드하여 재정의해야 합니다.
equals 메소드에서는 "두 객체가 같다" 의 기준이 될 필드들을 비교하도록 재정의합니다.
hashCode 메소드에서는 "두 객체가 같다" 의 기준이 될 필드들의 값으로 hashCode를 만들도록 재정의합니다.