오봉이와 함께하는 개발 블로그

검증(@Validated)에서 groups 사용 문제 본문

Artineer 리뉴얼 프로젝트

검증(@Validated)에서 groups 사용 문제

오봉봉이 2022. 9. 26. 18:21
728x90

고민

회원가입과 로그인의 DTO를 통일하면 DTO가 줄어 프로젝트를 단순화 시킬 수 있지만, 가독성이 떨어지고 복잡도가 올라간다는 생각이 든다.
또, DTO를 분할하면 프로젝트 구조가 조금은 복잡해질 수 있지만, 코드 가독성에는 더 좋고, 복잡도가 떨어질 거 같다고 판단된다.

통일

  • java
    • com
      • artineer
        • arineer
          • ...
          • ...
          • controller
            • dto
              • MemberDto
@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
@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