티스토리 뷰

TIL(Today I Learn)

TIL 220609

minji_6119 2022. 6. 9. 00:57

순환 참조를 방지하기 위한 방법은 여러 가지가 있다.

 

1. @JsonIgnore 

: 이 어노테이션을 붙이면 JSON 데이터에 해당 프로퍼티는 null로 들어가게 된다.

즉, 데이터에 아예 포함시키지 않는다.

 

2. @JsonManagedReference 와 @JsonBackReference

부모 클래스(Posts entity)의 Comment 필드에 @JsonManagedReference를, 자식 클래스(Comment entity)의 Posts 필드에 @JsonBackReference를 추가해주면 순환 참조를 막을 수 있다.

 

3.@JsonIgnoreProperties

: 부모 클래스(Posts entity)의 Comment 필드에 @JsonIgnoreProperties({"posts"}) 를 붙여주면 순환 참조를 막을 수 있다.

 

4. DTO 사용

: 위와 같은 상황이 발생하게된 주원인은 '양방향 매핑'이기도 하지만, 더 정확하게는 Entity 자체를 response로 리턴한데에 있다. entity 자체를 return 하지 말고, DTO 객체를 만들어 필요한 데이터만 옮겨담아 Client로 리턴하면 순환 참조 관련 문제는 애초에 방지 할 수 있다.

 

5. 매핑 재설정

: 양방향 매핑이 꼭 필요한지 다시 한번 생각해볼 필요가 있다. 만약 양쪽에서 접근할 필요가 없다면 단방향 매핑을 해줘서 자연스레 순환 참조 문제를 해결하자.

 

출처: https://dev-coco.tistory.com/133 [슬기로운 개발생활😃:티스토리]

 

데이터 휘발 방지 application.properties

spring.h2.console.enabled=true
spring.datasource.hikari.driver-class-name=org.h2.Driver
spring.datasource.hikari.jdbc-url=jdbc:h2:./deliverydb;AUTO_SERVER=TRUE
spring.datasource.hikari.username=sa
spring.datasource.hikari.password=

spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.type.descriptor.sql=trace

server.port=8081

데이터가 쌓이는게 싫어서

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL
spring.jpa.show-sql=true

로 데이터 저장이 안되게 했더니 테스트 하나 할 때마다 스프링부트가 다시 실행됨.. 첫번째 코드에서 ddl-auto를 create-drop으로 설정하려고 했더니 또 스프링 재부팅됨... 그냥 db 파일 지우는 걸로....

 

cannot deserialize from Object value 가 핵심 에러인 듯하여 찾아보니 builder를 사용할 때 @AllArgConstructor @NoArgConstructor를 넣어주었더니 해결되었다.

'TIL(Today I Learn)' 카테고리의 다른 글

WIL 6주차(Week I Learn)  (0) 2022.06.27
WIL 5주차(Week I Learn)  (0) 2022.06.19
TIL 220606  (0) 2022.06.06
TIL 220603  (0) 2022.06.03
TIL 220603  (0) 2022.06.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함