본문 바로가기

분류 전체보기43

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] IoC, DIP 와 DI 이해하기 https://youtu.be/8lp_nHicYd4 '우아한 Tech' 채널의 [10분 테코톡] 영상을 정리합니다. 더보기 00:34~01:35 : IoC '제어' 와 '역전' 의 의미 01:36~04:27 : IoC 는 왜 필요할까? 무엇이 달라질까? 04:28~07:25 : DIP 란? 07:26~07:58 : IoC 와 DIP 의 목적 07:59~10:13: 중간정리, IoC 와 DIP 를 적용한 코드와, 그렇지 않은 코드의 차이 10:14~11:03 : DI '의존성' 의 의미 11:04~12:25 : 의존성 주입의 3가지 방법 (생성자, setter, Interface) 12:26~13:04 : 의존성 분리 방법 : DIP 13:05~13:44 : 중간정리, principle :.. 2022. 6. 25.
[ERD 설계] 인스타그램 - ERD 설계 UMC 2기 4주차 과제로 인스타그램 데이터베이스 설계를 하게 되었다. 과정의 경우, 이전에 작성했던 '오늘의집 - ERD 설계' 때와 마찬가지로 요구사항 분석 (최종적으로 어느 기능까지 구현하고자 할 것인지)을 토대로 논리적 데이터 모델링을 진행했다. 1. 요구사항 분석하기 회원가입은 전화번호 or 이메일로 본인인증을 거친다. 본인인증 후 이름, 비밀번호를 입력한다. (비밀번호는 6자 이상, 숫자/영문/특수기호 포함) 생일을 추가하면 회원가입 완료 (만 14세 이상을 확인, 광고 개인화 등의 목적을 가짐) (프로필사진, 이름, 닉네임, 웹사이트, 소개) 는 '오픈 프로필' 에 해당, (이메일, 전화번호, 성별, 생일) 은 '개인정보' 에 해당. 이 중 사용자 이름, 전화번호만 필수항목 회원끼리는 팔로워.. 2022. 4. 7.
[Spring boot] 테스트코드의 필요성 이동욱님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 를 읽으며 새롭게 공부한 내용에 대해 정리합니다. chap2 에서는 단위 테스트의 필요성 간단한 테스트코드 작성 롬복을 사용하여 DTO 편하게 다루기 등의 내용이 있었다. 그 중 테스트코드의 필요성에 대해 작성하고자 한다. 1. 단위 테스트의 필요성 첫 번째 이미지는 단위 테스트코드를 작성하여 진행했던 프로젝트이고, 두 번째 이미지는 테스트코드를 몰랐을 때 전부 API 테스트 도구로 테스트했던 프로젝트이다. 책에서 단위테스트가 필요한 이유로는 ​빠른 피드백 / 자동검증 / 기존 기능의 정상 동작 보장 을 꼽았다. 이 책을 진작에 읽었어야 하는지, 아니면 겪어보았기 때문에 더 공감이 가는 것인지는 모르겠지만 정말정말 공감가는 내용이었다. 1. .. 2022. 4. 5.