Spring Boot, DTO 사용 방식
1. 이번 주에 배운 기술이나 개념 중 가장 기억에 남는 3가지는 무엇인가요?
이번 주에 가장 기억에 남는 것은 Spring Boot 프로젝트의 기본 구조, 계층 분리, 그리고 DTO 사용 방식입니다.
1. Spring Boot에서 Controller, Service, Repository, Model을 역할별로 나누는 구조입니다. 처음에는 파일이 많아져서 복잡해 보였지만, 각 클래스가 맡는 역할이 분리되니까 코드를 이해하고 수정하기 더 쉬워진다는 점을 배웠습니다.
2. Repository 인터페이스와 구현체를 따로 작성하는 방식입니다. UserRepository 인터페이스를 만들고, 메모리 저장 방식은 UserRepositoryMemImp에서 구현하면서 나중에 DB로 바뀌더라도 구조를 유지할 수 있다는 점이 인상 깊었습니다.
3. DTO를 사용해서 요청 데이터와 응답 데이터를 분리하는 개념입니다. UserReqDto, UserRespDto를 만들면서 클라이언트에서 받는 데이터와 다시 보내주는 데이터를 다르게 관리할 수 있다는 것을 배웠습니다.
2. 이번 주 과정 중 막혔던 문제나 오류가 있었나요? 어떻게 해결했나요? (없다면 가장 인상 깊었던 실습 내용)
가장 먼저 HashMap<>을 사용할 때 new 키워드를 빼먹어서 오류가 났습니다. HashMap<>()이 아니라 new HashMap<>()으로 작성해야 한다는 것을 확인하고 수정했습니다.
또 update() 메서드에서 users.put()만 작성하고 key와 value를 넣지 않아서 오류가 발생했습니다. users.put(user.getId(), user)처럼 id를 key로, user 객체를 value로 넣도록 수정했습니다.
UserService에서는 생성자 이름을 UserServive로 잘못 작성해서 오류가 났고, 메서드에 반환 타입을 쓰지 않은 문제도 있었습니다. 생성자 이름을 클래스 이름과 동일하게 맞추고, createNewUser() 메서드에 UserRespDto 반환 타입을 추가해서 해결했습니다.
또한 UserReqDto를 record로 만들었는데 Lombok의 @Getter, @Setter, @ToString을 붙여서 오류가 발생했습니다. record는 기본적으로 접근자 메서드와 toString()을 제공하므로 해당 어노테이션을 제거해서 해결했습니다.
3. 이번 주 수업 진도 속도, 강사님의 강의 스타일, 혹은 반 분위기는 어땠나요?
Spring Boot의 계층 구조와 DTO, Repository, Service 개념이 한 번에 연결되다 보니 처음에는 헷갈리는 부분이 있었습니다.
그래도 직접 코드를 작성하면서 오류를 만나고 하나씩 고쳐보는 과정이 도움이 되었습니다. 강사님이 단순히 문법만 설명하기보다는 왜 이런 구조로 나누는지 같이 설명해주셔서 전체 흐름을 이해하는 데 도움이 되었습니다.
반 분위기는 실습 위주로 따라가면서 모르는 부분을 확인하는 분위기였고, 오류가 나도 해결하면서 배우는 느낌이 강했습니다.
4. 다음 주에는 어떤 부분을 보완하고 싶나요?
다음 주에는 Spring Boot의 계층 구조를 더 정확히 이해하고 싶습니다. 특히 Controller에서 요청을 받고, Service에서 비즈니스 로직을 처리하고, Repository에서 데이터를 관리하는 흐름을 더 자연스럽게 작성할 수 있도록 연습하고 싶습니다.
또 Java 문법 실수도 줄이고 싶습니다. 생성자 이름, 반환 타입, return 누락, new 키워드처럼 기본적인 부분에서 오류가 났기 때문에 코드를 작성한 뒤 한 번 더 확인하는 습관을 들이고 싶습니다.
마지막으로 DTO와 record 사용법을 더 익히고 싶습니다. 일반 클래스 DTO와 record DTO의 차이를 정확히 알고 상황에 맞게 사용할 수 있도록 복습할 계획입니다.
댓글
댓글이 없습니다.
