💸딱 하루, 인프런 천원샵 오픈!

[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 3주차 발자국

[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 3주차 발자국

4주차 발자국입니다.

 

  1. 공통 예외 처리 및 응답 구조 설계

    • AdminException과 @RestControllerAdvice를 활용한 공통 예외 처리 구현

    • ApiResponse<T> 클래스를 통한 일관된 응답 메시지 제공

       

       

  2. Form 및 Table DTO 설계

    • FormElementDTO를 상속받은 다양한 Form 요소 구현 (Text, Date, Select)

    • TableDTO로 서버에서 테이블 구조와 데이터를 내려주는 방식

     

  3. Interceptor 및 동적 메뉴 구성

    • AdminInterceptor를 활용하여 메뉴 동적 렌더링 구현

    • 대메뉴(MenuDTO)와 소메뉴(PageDTO) 구조 설계 및 사이드바 연동

     

  4. 조회 페이지 개발 (연관관계 유무 구분)

    • 연관관계 없는 테이블 (e.g., Link, Skill)

    • 연관관계 있는 테이블 (e.g., Project-Detail, Experience-Detail)

    • 복잡한 구조에 맞춘 TableDTO.from() 사용법 숙지

     

  5. 삽입 및 수정 API 개발

    • @Validated, @NotBlank, @Positive 등을 활용한 Form 유효성 검증

    • 연관관계에 따라 다양한 save/update 로직 분기 처리

    • JPA의 더티 체킹을 이해하고, 적절히 save() 호출 생략

     

  6. 뷰 개발 및 템플릿 구조화

    • 부트스트랩 템플릿 적용 (BootstrapMade)

    • th:fragment를 활용한 HTML fragment 분리

    • 템플릿 관리 편의성 향상


Keep(잘한 점)

  • 실무에서 vo와 dto의 개념이 혼동되어 쓰이고 있는 경우를 많이 보았는데, 이번 강의를 통해 FormElementDTO와 TableDTO를 도입해, 프론트-백 간 협업에서 구조를 명확히 정의하는 것이 중요하다는 것을 이해했다.

  • Interceptor로 메뉴를 동적으로 설정하고, 뷰에서 자동 렌더링되도록 만든 구조는 앞으로 다양한 관리 페이지에서 재사용 가능한 점에 대한 이해했다.

  • @RestControllerAdvice 기반의 예외 처리로 서비스 전반의 일관성을 유지하는 방식을 이해했다.

  • 연관관계에 따른 테이블 구성 방식을 정리하며 도메인 간 설계가 훨씬 명확해짐을 이해했다.


Problem(아쉬운 점)

  • 리플렉션 사용에 대한 성능 이슈에 대하여 명백한 근거를 잘 모르겠던 부분이 있어서 추가 학습이 필요해보인다.

  • 연관관계가 복잡한 엔티티일수록 form → entity 매핑이 반복되며 번거로운 거 같은데 지식이 부족한 거 같다.

     


Try(다음에 시도해볼 점)

  • interceptor 외에 AOP를 활용한 공통 관심사 처리를 구현해보려고 한다.

  • 예외 응답에 error code 및 field 정보 추가하여 클라이언트 UX 향상시키면 어떨까 라는 생각이 들었다.

  • 내가 다니는 회사에서는 admin화면이 존재하지 않아 익숙하지 않은 부분이 있었는데 학습을 진행한 후에는 서비스를 제공함에 있어서 정말 중요한 요소 중 하나라는 생각이 더더욱 들었다. 관리자 화면과 클라이언트 화면은 어떠한 차이를 가져야하는지 더 실무적으로 경험해보고 싶었다.

댓글을 작성해보세요.


채널톡 아이콘