21.06.16 TIL BOOT+JPA - 댓글(무한참조) : 블로그

김정훈·2021년 6월 16일

📌 BOOT+JPA 블로그 만들기(댓글 - 무한참조기능 처리)


🧑🏻‍⚕️ detail.jsp → board.js → BoardApiController → BoardService → ReplyRepository
https://github.com/JHKIMS/SpringBoot_Jpa_Blog

1. detail.jsp
: textarea 부분에 내용을 입력하고 button을 누르면 userId, boardId, reply-content
이 3가지를 들고 board.js로 이동한다.

2. board.js
: 그럼 board.js는 POST방식으로 빨간박스의 url로 이동한다.

3. BoardApiController

+ReplySaveReqDto

4. BoardService
: replyRepository는 인터페이스이므로, 여기서 댓글 등록이 DB로 이루어진다고 볼 수 있다.

5. ReplyRepository
: 네이티브 쿼리로 작성되었는데, detail.jsp에서부터 가져온 목록들을 DB에 Insert시켜줌으로써 댓글 등록이 끝이 난다.

∞ 무한참조 개념 + 처리하는 방법

: 게시글 상세보기를 하면 get으로 Board의 정보들을 가져오게 되는데, 그러면 이 Board는 Reply를 가져오게 되는데, 여기서 무한참조가 발생하게 된다. 왜 냐하면 Reply엔티티 객체를 보면 Board를 get해야하는데, 이러면 결국에는
Board → Reply → Board → Reply → Board → Reply 계속 이렇게 돌면서 무한참조 현상이 일어난다.
🙇🏻‍♂️ 그래서 이 문제를 해결하기 위해서, 2번째 그림을 보면 @JsonIgnoreProperties를 사용해서 replys를 get할때 board를 제외하고 가져오라는 역할을 함으로써 무한참조를 막을 수 있다.
무한참조를 막는 방법은 다양하다고 하는데, 따로 한 번 공부해볼 예정이다.


⟴ 댓글 삭제 부분은 로직이 간단해서 굳이 포스팅 하지 않았다. 혹시 모르니 Github링크를 게시글 시작 부분에 링크 걸어서 볼 수 있도록 했고, 다음으로는 KIM★GRAM의 블로그와는 또 다른 방식으로 회원수정을 하는 방법에 대해서 포스팅할 예정이다.

profile
WebDeveloper

0개의 댓글