![[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 3주차 발자국](https://cdn.inflearn.com/public/files/blogs/bd2cb332-4b20-4645-9b7c-2186748c9228/워밍업클럽_3기.png)
[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 3주차 발자국
4주차 발자국입니다.
공통 예외 처리 및 응답 구조 설계
AdminException과 @RestControllerAdvice를 활용한 공통 예외 처리 구현
ApiResponse<T> 클래스를 통한 일관된 응답 메시지 제공
Form 및 Table DTO 설계
FormElementDTO를 상속받은 다양한 Form 요소 구현 (Text, Date, Select)
TableDTO로 서버에서 테이블 구조와 데이터를 내려주는 방식
Interceptor 및 동적 메뉴 구성
AdminInterceptor를 활용하여 메뉴 동적 렌더링 구현
대메뉴(MenuDTO)와 소메뉴(PageDTO) 구조 설계 및 사이드바 연동
조회 페이지 개발 (연관관계 유무 구분)
연관관계 없는 테이블 (e.g., Link, Skill)
연관관계 있는 테이블 (e.g., Project-Detail, Experience-Detail)
복잡한 구조에 맞춘 TableDTO.from() 사용법 숙지
삽입 및 수정 API 개발
@Validated, @NotBlank, @Positive 등을 활용한 Form 유효성 검증
연관관계에 따라 다양한 save/update 로직 분기 처리
JPA의 더티 체킹을 이해하고, 적절히 save() 호출 생략
뷰 개발 및 템플릿 구조화
부트스트랩 템플릿 적용 (BootstrapMade)
th:fragment를 활용한 HTML fragment 분리
템플릿 관리 편의성 향상
Keep(잘한 점)
실무에서 vo와 dto의 개념이 혼동되어 쓰이고 있는 경우를 많이 보았는데, 이번 강의를 통해 FormElementDTO와 TableDTO를 도입해, 프론트-백 간 협업에서 구조를 명확히 정의하는 것이 중요하다는 것을 이해했다.
Interceptor로 메뉴를 동적으로 설정하고, 뷰에서 자동 렌더링되도록 만든 구조는 앞으로 다양한 관리 페이지에서 재사용 가능한 점에 대한 이해했다.
@RestControllerAdvice 기반의 예외 처리로 서비스 전반의 일관성을 유지하는 방식을 이해했다.
연관관계에 따른 테이블 구성 방식을 정리하며 도메인 간 설계가 훨씬 명확해짐을 이해했다.
Problem(아쉬운 점)
리플렉션 사용에 대한 성능 이슈에 대하여 명백한 근거를 잘 모르겠던 부분이 있어서 추가 학습이 필요해보인다.
연관관계가 복잡한 엔티티일수록 form → entity 매핑이 반복되며 번거로운 거 같은데 지식이 부족한 거 같다.
Try(다음에 시도해볼 점)
interceptor 외에 AOP를 활용한 공통 관심사 처리를 구현해보려고 한다.
예외 응답에 error code 및 field 정보 추가하여 클라이언트 UX 향상시키면 어떨까 라는 생각이 들었다.
내가 다니는 회사에서는 admin화면이 존재하지 않아 익숙하지 않은 부분이 있었는데 학습을 진행한 후에는 서비스를 제공함에 있어서 정말 중요한 요소 중 하나라는 생각이 더더욱 들었다. 관리자 화면과 클라이언트 화면은 어떠한 차이를 가져야하는지 더 실무적으로 경험해보고 싶었다.
댓글을 작성해보세요.