- @JsonIgnore는 해당 필드를 JSON 직렬화/역직렬화 시 사용한다. 다만 아래와 같은 단점이 있다
- 데이터 손실 위험: @JsonIgnore를 사용하면 해당 필드가 JSON 직렬화 및 역직렬화 과정에서 무시됩니다. 이는 클라이언트와 서버 간 데이터 전송 시 해당 필드의 데이터가 손실될 수 있음을 의미합니다. 예를 들어, 서버에서 생성된 lastUpdated 필드를 클라이언트로 전송하지 않으면, 클라이언트가 이 필드를 다시 서버로 전송할 때 최신 값을 알 수 없게 됩니다.
- 데이터 불일치 문제: 특정 필드를 무시하면, 클라이언트와 서버 간 데이터 모델이 일치하지 않게 됩니다. 이는 특히 데이터 무결성을 유지해야 하는 시스템에서 문제가 될 수 있습니다. 클라이언트 측에서 변경된 데이터가 서버 측 데이터와 일치하지 않게 되어 동기화 문제를 야기할 수 있습니다.
- 디버깅 어려움: 무시된 필드가 디버깅 과정에서 문제를 일으킬 수 있습니다. 개발자는 JSON 데이터를 보고 특정 필드가 누락된 이유를 추적하기 어려울 수 있으며, 이는 디버깅 및 유지보수 비용을 증가시킵니다.
- 테스트 복잡성 증가: 특정 필드를 무시할 경우, 이를 처리하는 테스트 케이스를 작성하는 것이 복잡해질 수 있습니다. JSON 직렬화/역직렬화 과정에서 제외되는 필드를 고려하여 테스트를 작성해야 하며, 이는 테스트 코드의 복잡성을 증가시킵니다.
- 비일관성 문제: @JsonIgnore 애너테이션을 잘못 사용하면, 애플리케이션의 다양한 부분에서 데이터 처리의 일관성을 유지하기 어려울 수 있습니다. 예를 들어, 일부 API 엔드포인트에서는 필드를 무시하고, 다른 엔드포인트에서는 필드를 포함하도록 설정하면 비일관성이 발생할 수 있습니다.
- 유연성 감소: @JsonIgnore는 특정 필드를 무조건 무시하도록 설정합니다. 때로는 조건부로 필드를 무시하거나 포함해야 할 필요가 있을 수 있는데, 이러한 요구 사항을 처리하기 어렵습니다. 더 정교한 조건부 직렬화가 필요할 경우, 커스텀 시리얼라이저를 구현해야 할 수도 있습니다.
- 그래서 Response 에서 Field 를 누락 시키기 위해서라면(특히 5번..)
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 또는 @JsonInclude(JsonInclude.Include.NON_NULL)의 조건을 사용해서 조건부로 포함했습니다. 이 경우 lastUpdated가 null이 아닐 때만 JSON에 포함됩니다.
이를 통해 lastUpdated 필드는 필요할 때만 JSON에 포함되며, 필요하지 않을 때는 무시됩니다. 이 접근 방식은 @JsonIgnore 대신 사용할 수 있는 유연한 대안을 제공합니다.
'프로그래밍 > spring' 카테고리의 다른 글
@Configuable 과 @Configuation 의 차이 (0) | 2024.07.28 |
---|---|
Jasypt library (0) | 2024.07.28 |
Spring Batch 5 (0) | 2024.06.09 |
tomcat 을 대체 하기 위한 undertow (0) | 2024.05.31 |
[JPA] fetch join 사용시 pagination 적용 - subquery 예제 (0) | 2024.05.19 |