☠️ 트러블 슈팅
- 발생한 Issue
- 도전과제 진행 중 댓글 생성 및 작성하기 기능 연결이 어려웠음
- 일정 생성 및 관리의 기능과 댓글 생성 및 관리의 기능을 분리해야 하는 것까지는 접근을 했음
- 기능 분리 이후의 접근 방식을 어떻게 해야할까 고민
- 해결방법 / 찾아본 내용
- 댓글 생성 및 관리하기 기능 연결
- 우선 기존의 Event(일정) CRUD 기능과 Comment(댓글) 생성기능의 분리를 위해 디렉토리로 구분을 하였음
- 양방향 연관관계의 개념을 이해하고 접근했어야 했음
- 진행 간 단일 조회시에 생성한 댓글이 연결되어야 하는 부분이 있어 별도의 클래스파일을 통해 연결하였음.
→ 전체 조회 시 댓글이 나오는 이슈가 있어 해당 부분을 해결하는 과정에서 추가를 진행
- EventService에서 댓글 배열을 불러와 응답과정에 객체로 담아낼 수 있도록 설정하여 두 내용을 연결하였음
- 3 Layer Arichitecture 구조가 필요한 이유
- 관심사의 분리를 통해 각 계층이 고유한 책임을 담당하게 하고, 변경사항의 영향 범위를 최소화 할 수 있음
- 유지보수성이 향상되며 코드의 가독성과 이해도가 증가하고 독립적인 테스트가 가능함
- 각 계층을 독립적으로 재사용할 수 있고 모듈화된 설계 구현이 가능함
- 특청 계층만 변경하여 기능을 확장할 수 있고 새로운 기술 도입이 용이함
- @RequestParam, @PathVariable, @RequestBody
- @RequestParam
- URL의 ?key=value 형태의 데이터를 파라미터로 받는데 사용
- 검색 조건, 필터링 값, 페이징 값 등 선택적 파라미터에서 사용됨
- @PathVariable
- URL경로의 일부를 변수로 받게 도와주는 것
- 경로는 중괄호 {id}로 둘러싸인 값을 나타냄
- @RequestBody
- 요청 본문을 객체로 받는 기능
- HTTP body에 담긴 JSON/XML 데이터를 Java 객체로 변환시켜줌