스프링/개념

@Data 어노테이션에 관하여

문상휘파람 2024. 9. 30. 17:07
  • 기본적으로 @Data 어노테이션은 Lombok 라이브러리에서 제공하는 기능입니다.
## @Data 어노테이션 특징

1.  Getter 메서드: 각 필드에 대해 getter 메서드를 생성합니다.
2.  Setter 메서드: 각 필드에 대해 setter 메서드를 생성합니다.
3.  toString() 메서드: 객체의 내용을 문자열로 변환하는 toString() 메서드를 생성합니다.
4.  equals() 메서드: 객체 간의 동등성을 비교하는 equals() 메서드를 생성합니다.
5.  hashCode() 메서드: 객체의 해시 코드를 반환하는 hashCode() 메서드를 생성합니다.
6.  RequiredArgsConstructor: final 또는 @NonNull로 선언된 필드에 대한 생성자를 자동으로 생성합니다.

이렇게 많은 기능을 제공하는지는 저도 찾아보면서 알게 되었습니다..!!

 

사용시 주의 사항.

 

** 모든 필드에 대해 equals와 hashCode 메서드를 생성하기 때문에, 특정 필드를 제외하거나 원하는 방식으로 커스터마이즈해야 할 경우 Lombok의 다른 어노테이션(@EqualsAndHashCode.Exclude 등)을 함께 사용해야 한다고 합니다. **

그렇다면 왜 @Data 어노테이션 사용을 지양해야 할까요??

이유는 다음과 같습니다.

  • 예를 들어 id의 필드가 변경을 허용치 않기로했다면 setter가 없어야합니다. -> @Data 어노테이션을 사용하면 Setter가 자동 생성 되기에 id 값을 변경할 수 있는 문제가 발생하므로 사용을 지양해야합니다!