HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🏠
2차 팀 프로젝트: 오늘의 집
/
lombok @EqualsAndHashCode 제안

lombok @EqualsAndHashCode 제안

완료 여부
완료
발의자
 
  • 기능
    • 엔티티에 대하여 직접 정의해야하는 equals, hashcode 메소드를 알아서 정의해 줌
       
  • 사용 시 있을 수 있는 문제점
      1. immutable하지 않은 필드로 인해 equals를 통한 비교(동등성 비교)가 제대로 이루어지지 않을 수 있음
        1. ex)
          @EqualsAndHashCode public class User{ private Long id; private String nickname; private int followingCount =0;
          위에서의 followingCount , nickname 필드는 변경 가능한 값인데, 이 필드의 값 변경으로 인하여 동등성 비교에 실패할 가능성 있음
       
      1. 비교에 사용되는 필드를 지정하지 않아 생길 수 있는 문제
        1. 양방향 연관관계로 설정되어 있는 필드로 인한 순환 참조 가능성 ㅇ
       
       
       
  • 위의 문제점을 보완?하기 위한 사용
    • @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;
       
      비교에 필요한 필드만을 지정
    • onlyExplicitlyIncluded 옵션, @EqualsAndHashCode.Include를 이용하여 immutable한 필드만을 대상으로 equals가 생성되게 함
    •