일정관리 앱 Develop

정채림·2026년 2월 12일

트러블 슈팅

  1. 타입 불일치 및 인식 에러
  • 문제: String author 필드에 @ManyToOne을 설정하려다 보니 "속성 타입은 'User'일 수 없습니다"라는 에러 발생.

  • 원인: JPA 연관관계는 단순 값이 아닌 엔티티 객체 간의 연결이어야 함.

  • 해결: private String author;를 private User author;로 변경하고, 대상 클래스에 @Entity가 붙어 있는지 확인.

  1. 서비스 로직의 책임 분리 (Domain Logic)
  • 문제: TodoList를 수정할 때 작성자의 이름까지 직접 수정하려고 함.

  • 원인: 객체지향 설계에서 '작성자의 정보'는 User 도메인의 책임인데, TodoList 도메인이 이를 침범함.

  • 해결: 유저 정보 수정: UserService에서 처리. (Dirty Checking을 통해 연결된 모든 글에 자동 반영)
    작성자 교체: TodoListService에서 새로운 User 객체를 조회하여 할당.

  1. DTO 설계 및 데이터 노출 방지
  • 문제: Response DTO에 User 엔티티를 통째로 담아 비밀번호 등 민감 정보가 유출되거나 순환 참조 에러 위험 발생.

  • 해결: Response DTO에서는 User 객체 대신 String authorName 필드를 사용하여 필요한 정보만 가공해서 전달.

  1. 전체 조회 API의 유연성
  • 문제: @PathVariable을 사용하면 반드시 특정 ID를 넣어야 해서 '전체 조회' 기능을 동시에 쓰기 불편함.

  • 해결: @RequestParam(required = false)를 사용하여 /todos 호출 시 전체 목록을, /todos?authorId=1 호출 시 특정 유저의 목록을 반환하도록 개선.

0개의 댓글