DTO?
DTO는 Data Transfer Object의 약자로, 계층간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체이다. DTO는 순수하게 데이터를 저장하고, 데이터에 대한 getter, setter만을 가져야 한다. DTO는 어떠한 비지니스 로직을 가져서는 안되며, 저장, 검색, serialization, deserialization 로직만을 가져야 한다.
- DTO 사용 과정
1) 유저가 데이터를 입력하면 form에 있는 데이터를 DTO에 넣어서 전달한다.
2) 해당 DTO를 받은 서버가 DAO를 이용하여 DB로 데이터를 집어 넣는다.
3) 서버가 클라이언트에게 값을 전달할 때는 controller layer에서 response DTO 형태로 값을 전달한다.
도메인 모델 대신 DTO를 사용하면 좋은 이유
- UI 계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경시킬 수 있다.
- UI 화면마다 사용하는 도메인 모델의 정보는 상이한데, 도메인 모델은 해당 화면에서 필요하지 않은 정보까지 가지고 있어서 도메인 모델의 모든 속성을 외부로 노출시키게 된다. 이런 취약점을 DTO를 통해 도메인 모델을 캡슐화하여 보완할 수 있다.
DAO와 VO는?
DAO는 Data Access Object로 데이터베이스의 data에 접근하기 위한 객체이다. DB에 접근하기 위한 로직과 비지니스 로직을 분리하기 위해 사용된다.
VO는 DTO와 자주 혼동되는 개념인데, Value Object의 약자로 값을 위해 쓰이고 read-only라는 특징을 가진다.
FE&BE 협업 프로젝트
- 프로젝트 계획 단계에서 매우 중요했던 부분
- API 명세서 정확하게 작성하기: 정확하게 작성하지 않았을 경우 req, res로 받는 데이터의 형식이 다를 수 있기 때문에
- DB 설계: 다양한 관계를 맺고 있는 데이터들을 어떤 기준으로 테이블에 나누고 연결하는지가 초기 프로젝트 계획 단계에서 중요
- 더 공부하고 싶은 것
- 에러로그 로깅
- 이메일 인증
- CI/CD
- 디자인 패턴
- 테스트 코드 & TDD