오봉이와 함께하는 개발 블로그
검증(@Validated)에서 groups 사용 문제 본문
728x90
고민
회원가입과 로그인의 DTO를 통일하면 DTO가 줄어 프로젝트를 단순화 시킬 수 있지만, 가독성이 떨어지고 복잡도가 올라간다는 생각이 든다.
또, DTO를 분할하면 프로젝트 구조가 조금은 복잡해질 수 있지만, 코드 가독성에는 더 좋고, 복잡도가 떨어질 거 같다고 판단된다.
통일
- java
- com
- artineer
- arineer
- ...
- ...
- controller
- dto
- MemberDto
- dto
- arineer
- artineer
- com
@Getter
@Setter
public class MemberDto {
@NotBlank(groups = {SignUpMarker.class, SignInMarker.class}) // 회원가입, 로그인시 검증
private String id;
@NotBlank(groups = {SignUpMarker.class, SignInMarker.class})
private String password;
@NotBlank(groups = {SignUpMarker.class})
private String name;
private Birth birth;
@NotBlank(groups = {SignUpMarker.class})
private String emailId;
@NotBlank(groups = {SignUpMarker.class})
private String emailDomain;
private Phone phone;
@NotBlank(groups = {SignUpMarker.class})
private String gender;
@NotBlank(groups = {SignUpMarker.class})
private String generation;
private String level;
}
public interface SignInMarker {
}
public interface SignUpMarker {
}
분할
- java
- com
- artineer
- arineer
- ...
- ...
- controller
- dto
- MemberSaveDto
- MemberLoginDto
- dto
- arineer
- artineer
- com
@Getter
@Setter
public class MemberSaveDto {
@NotBlank
private String id;
@NotBlank
private String password;
@NotBlank
private String name;
private Birth birth;
@NotBlank
private String emailId;
@NotBlank
private String emailDomain;
private Phone phone;
@NotBlank
private String gender;
@NotBlank
private String generation;
private String level;
}
@Getter @Setter
public class MemberLoginDto {
@NotBlank
private String id;
@NotBlank
private String password;
}
무엇을 선택?
결론부터 말하면 DTO를 나누기로 결정했다.groups
에 대해서 공부할 때 중요하게 생각했던 것이 DTO의 용도에 대한 것이라고 생각했다.
로그인과, 회원가입의 용도가 다르기 때문에 DTO를 분리하고, 각자 검증하겠다.groups
는 사용하기 좀 어중간한 기능이지 않을까 싶다...
728x90
'Artineer 리뉴얼 프로젝트' 카테고리의 다른 글
보완할 기능 (0) | 2022.09.27 |
---|---|
Interceptor 적용 (0) | 2022.09.27 |
Form에서 @Embeddable 객체 응답받기 (1) | 2022.09.23 |
기능 정리 (0) | 2022.09.22 |
JPA - 테이블 매핑 에러 해결 (1) | 2022.09.21 |
Comments