- 기능
엔티티에 대하여 직접 정의해야하는 equals, hashcode 메소드를 알아서 정의해 줌
- 사용 시 있을 수 있는 문제점
- immutable하지 않은 필드로 인해 equals를 통한 비교(동등성 비교)가 제대로 이루어지지 않을 수 있음
- 비교에 사용되는 필드를 지정하지 않아 생길 수 있는 문제
- 양방향 연관관계로 설정되어 있는 필드로 인한 순환 참조 가능성 ㅇ
ex)
@EqualsAndHashCode public class User{ private Long id; private String nickname; private int followingCount =0;
위에서의 followingCount , nickname 필드는 변경 가능한 값인데, 이 필드의 값 변경으로 인하여 동등성 비교에 실패할 가능성 있음
- 위의 문제점을 보완?하기 위한 사용
@EqualsAndHashCode(callSuper = false, onlyExplicitlyIncluded = true) public class User{ @Id @EqualsAndHashCode.Include private Long id; @EqualsAndHashCode.Include @Column(name = "email", nullable = false, unique = true, length = 300) private String email;
비교에 필요한 필드만을 지정