Skip to content

Commit

Permalink
Fix: README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
bohub12 committed Sep 27, 2023
1 parent 14ffa1d commit 578d408
Showing 1 changed file with 53 additions and 1 deletion.
54 changes: 53 additions & 1 deletion json-util/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,56 @@ ManyToOne 어노테이션으로 LAZY하게 연관관계를 가지는 객체를


## JsonIgnoreType
클래스 대상으로 해당 클래스를 참조하고 있는 객체에서 Json에서 ignore 할지 말지 결정할 수 있는 어노테이션
클래스 대상으로 해당 클래스를 참조하고 있는 객체에서 Json에서 ignore 할지 말지 결정할 수 있는 어노테이션

## JsonInclude

Json으로 직렬화할 때, 필드에 특정 값(null, "", ... 등) 일 경우 핸들링할 수 있는 어노테이션이다. 아래는 JsonInclude 어노테이션 속성별로 어떤 값을 가질 때 제외되는지 정리한 내용이다.

- ALWAYS (default)

- 조건 없음

- NON_NULL

- null

- NON_ABSENT

- null

- absent = 참조(reference) 타입에 absent value (Optional, AtomicReference 등)

- NON_EMPTY

- null

- absent

- 비어있는 Collection, Map

- Array 길이가 0

- String 길이가 0

- NON_DEFAULT

- NON_EMPTY 조건

- primitive 타입이 default 값인 경우 (int 형은 0, boolean은 false)


## JsonView

- 조건에 따라 직렬화하는 필드를 다르게 설정할 수 있는 어노테이션이다


## JsonManagedReference & JsonBackReference

- JPA 엔티티를 컨트롤러 단계까지 올리다가 순환참조로 문제 생기는 상황을 방지할 수 있게끔 해주는 어노테이션 조합이다.

- 연관관계의 주인에 `@JsonManagedReference` 를 달아주고, 매핑되는 엔티티는 `@JsonBackReference` 어노테이션을 달아주면, toString() 메서드를 호출해도 순환참조 되지 않는다.

- 당연히 Json 직렬화에도 순환참조로 생기는 문제를 막을 수 있다.

- 이 방식으로 하기보다는, 컨트롤러 단에서 DTO 리턴해주는 것이 순환참조 문제를 막을 수 있을 뿐더러 JPA라는 기술에 의존하지 않음으로써 장점을 가진다.

0 comments on commit 578d408

Please sign in to comment.