반응형
- 프로젝트 패키지 구조 고민
- 학교에서 사용하던 패키지 구조
- Controller
- Service
- IService
- Mapper
- IMapper
- DTO
- 프로젝트 패키지 구조를 저번에 공부했을 때(🔗 ← Click! 참고) 작은 단위에서 크게 확장할 수 있는 구조로 짜는 게 중요하다고 했는데 사실 내가 경험이 많지 않아서 어떻게 해야 할 지 감이 안 잡힌다.
- 다만 위와 같은 구조에서 Entity를 DTO와 나누어 새로 만들어 주었다.
- 학교에서 사용하던 패키지 구조
- Entity와 DTO의 차이?
- Entity는 실제 테이블과 매핑이 된다.
- Setter를 사용하지 않는 게 좋다.
- 왜?
- 객체 값을 쉽게 변경할 수 있게 되면 일관성을 유지하기 어려워진다.
- 일관성을 잃으면 유지 보수가 어려워진다.
- 그럼 어떻게?
- Setter 대신에 생성자를 생성해 준다.
- 더 좋은 방법은 Builder Patter으로 객체 생성을 제한하는 방법이 있다고 하는데 아직은 잘 모르겠다.
- @Builder 어노테이션을 활용해 만들 수 있다.
- 내 프로젝트는 어떻게?
- Setter를 지우고 생성자를 만들어 줬다.
- 일단은 이렇게 다 넣고 생성했지만 추후에 필요에 따라 추가 생성자를 만들어 사용할 계획이다.
- /** * setter 사용을 지양하기 위해 만든 생성자. * * @param userNo 시퀸스 넘버 * @param userName 이름 * @param userPn 핸드폰 번호 * @param userEmail 이메일 * @param userId 아이디 * @param userPw 비밀번호 * @param userAddr 근무 주소 */ public void changeUserInfo(Long userNo, String userName, String userPn, String userEmail, String userId, String userPw, String userAddr) { this.userNo = userNo; this.userName = userName; this.userPn = userPn; this.userEmail = userEmail; this.userId = userId; this.userPw = userPw; this.userAddr = userAddr; }
- 왜?
- Setter를 사용하지 않는 게 좋다.
- DTO는?
- Data Transfer Object로 데이터 전송 객체이다.
- 비동기 처리에 주로 사용된다.
- 로직을 가지고 있지 않고 Getter와 Setter를 사용한다.
- 그냥 쉽게 말해 단순 Data 송, 수신용도로 사용된다고 보면 된다.
- Entity는 실제 테이블과 매핑이 된다.
오늘은 프로젝트를 많이 하지는 못 했다. 오후에 간단한 인터뷰도 하고, 강의도 듣고, 생각 정리도 했다.
반응형
'Project > 소경관' 카테고리의 다른 글
[소경관] : 새벽에 공부한 내용 체크와 리프레쉬 (0) | 2022.04.10 |
---|---|
[소경관] : 프로젝트에 적용하기 위해 JPA Builder, Entity 사용 공부 중 (0) | 2022.04.09 |
[소경관] : 다시 AWS EC2 Ubuntu에 MongoDB, MariaDB 세팅 후 연동 및 JPA 테이블 자동 생성 완성 (0) | 2022.04.07 |
[소경관] : 로컬 데이터베이스 설정 및 프론트 마저 진행하기 (0) | 2022.04.04 |
[소경관] : 프론트 뼈대 잡기와 Jenkins 재도전 하기 (0) | 2022.04.02 |
댓글