카테고리 없음

2024년 11월 26일(화) Today I Learned

tjdals9709 2024. 11. 27. 19:17

@Data 주의 사항

 

@Data 어노테이션이란

 

다음은 Formatter를 이용하는 예시 중 하나이다.

@Data
public class FormatForm {

    @NumberFormat(pattern = "#,###.##")
    private BigDecimal price;

    @DateTimeFormat(pattern = "dd-MM-yyyy")
    private LocalDate orderDate;

}

 

@Data 어노테이션은 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한꺼번에 적용하는 어노테이션이다. 해당 코드는 이러한 @Data를 이용해 많은 어노테이션을 호출하였다. 그러나 해당 예시는 운영코드에서 사용하지 않는 것이 좋다고 한다. 그 이유는 @Data의 포함되어 있는 @Setter에 있다.

 

@Setter는 외부에서 필드의 값을 변경하기 위해 사용하기 때문에, Setter를 사용하게 되면 값의 일관성을 유지하기 어렵고, 원하지 않는 값이 들어가는 경우가 발생할 수도 있다.

 

그렇기에 @Data를 이용하려면 다음과 같은 규칙을 따르는 것이 좋다.

 

1. Entity에서는 사용하지 않는다.

2. DTO에서만 사용한다.(Setter는 DTO 내부 메서드에서만 사용한다.)