본문 바로가기

Spring/Coding Convention4

Nested Class 에 언제 static 을 붙여야 할까? 이전 DTO 는 어떻게 구성하고, 변환해야 할까? 글에 이어서 dto 를 inner class 로 묶을 때, 각 class 에 static 을 붙여주는 것이 좋은데, 이 상황에서 왜 static 을 붙이는 것이 좋은지 설명하려다 보니 Java 의 Nested Class 부터 알고 넘어가면 좋을 것 같아 정리하게 되었다. Nested Classes, Terminology (이동) Nested Classes 를 왜 사용하는가? (이동) Inner Classes (이동) Static Nested Classes (이동) DTO 를 Nested Classes 로 묶을 때 왜 static 을 붙이는 것이 좋은가? (이동) 1 ~ 4 까지는 oracle 의 공식 문서에서 필요한 내용을 번역한 것이며, 5번이 결론이다.. 2022. 7. 13.
DTO 는 어떻게 구성하고, 변환해야 할까? 지난 번에 DTO 를 사용해야 하는 이유 를 정리해 본 후, 어떻게 매핑하면 될 지에 대해서도 한 번 정리해둔다면 내 생각을 말할 때 많은 도움이 될 것 같다고 생각했다. DTO class 를 어떻게 구성하고 변환할 것인가 1. 처음 공부했던 방식 (이동) 2. 개선했던 방식 (이동) 3. 각 방식에서의 장점과 단점, 내 생각 (이동) 4. 그 당시와 지금의 생각 (이동) 1. 처음 공부했던 방식 처음 Spring Boot 를 접하고 공부를 시작할 때에는 위와 같이 DTO class 들을 작성했었다. DTO 디렉토리 아래에 나름 편하게 구분하고 싶어서 {POST / GET / PATCH / DELETE} + {작업내용} + {Req / Res} 와 같은 네이밍을 가져갔었다. Entity - DTO 매핑방.. 2022. 7. 13.
DTO 를 사용해야 하는 이유 1. 필요한 데이터만을 응답으로 줄 수 있다. 클라이언트로 넘겨줘야 할 정보는 API 마다 상이하다. Entity 자체를 클라이언트에 대한 응답으로 넘기는 것은 불필요한 데이터를 포함할 수 있으며, 혹시 모를 민감 정보 노출 등의 문제를 일으킬 수 있다. 2. Entity 구현을 캡슐화하여 보호할 수 있다. DTO 가 없다면 클라이언트의 요청과 Entity Model 이 강하게 결합되어 클라이언트에서의 요구사항 변화가 Entity 에 영향을 끼치기 쉽다. Entity 는 도메인의 핵심 로직, 속성을 갖고 있으며, 실제 DB 테이블에 대응되는 클래스이므로 함부로 변경되지 않도록 보호되어야 한다. 3. Validation 코드와 Entity 속성 코드를 분리할 수 있다. Entity class 에는 @Col.. 2022. 7. 11.
[Spring boot] Spring 프로젝트 계층구조에 대한 고민 이전에 혼자 공부하며 진행했던 스프링 프로젝트이다. 크게 config - src - utils 로 나누고, config는 통합 json response 및 exception 등을, src 도메인 단위로 controller - service - dao 를 가지도록, utils는 jwt, validation 등을 가지도록 하였다. 스프링 동작 원리에 대해 잘 알지 못하지만, 이번 프로젝트에서도 위 구조를 그대로 쓰기 보다는 구글링을 조금 더 해보고, 일반적으로 더 많이 쓰이는 컨벤션이 있는지, 이유가 있다면 왜인지 더 알고 싶어서 깃허브와 구글을 찾아보았다. 더보기 https://github.com/woowacourse-teams wo.. 2022. 1. 13.