강의

멘토링

커뮤니티

Inflearn Community Q&A

cupjoo1120's profile image
cupjoo1120

asked

Real-world! Spring Boot and JPA Utilization 1 - Web Application Development

Member Service Development

예외 validate하는 시점이 궁금합니다.

Written on

·

256

0

강의를 연습하려고 설문조사 사이트를 만드려고 합니다. 설문 엔티티에는 설문 시작 시간과 설문 종료 시간 필드가 있는데, Controller에서 Dto로 객체 정보를 받으면 다음과 같은 예외 처리를 하려 합니다.

public void validateChangeableDateTime(){
    // 설문 시작 시점이 종료 시점보다 늦는지 검사
    if(startDate.isAfter(endDate)){
        throw new InvaildTimeToChangeError("End date can't be earlier than start date.");
    }
    // 이미 종료된 설문인지 검사
    if(LocalDateTime.now().isAfter(endDate)){
        throw new InvaildTimeToChangeError("Survey is closed.");
    }
    // 이미 진행 중인 설문인지 검사
    if(LocalDateTime.now().isAfter(startDate)){
        throw new InvaildTimeToChangeError("Survey is already in progress.");
    }
}

그런데 해당 예외 처리 함수를 엔티티에 삽입하려니 테이블 매핑 시 불필요한 내용들이 추가될 거 같고, DTO에 추가하려니 너무 DTO 몸집이 커진다 해야하나.. 그래서 서비스 계층에서 구현을 해야하나 고민중입니다. 그러자니 또 도메인 모델 패턴을 위반하는 거 같고..

혹시 이 경우엔 어디서 해당 로직을 구현하는 게 맞을까요?

spring-boot웹앱JPAspringjava

Answer 1

1

yh님의 프로필 이미지
yh
Instructor

안녕하세요^^

특정 비즈니스의 검증 로직이 너무 크다면, 별도의 클래스로 분리하시면 좋습니다. 예를 들어서 XxxValidator 같은 클래스를 별도로 만드는 것이지요.

그리고 이 클래스를 서비스 계층이나 엔티티에서 호출하시면 됩니다^^

감사합니다.

cupjoo1120's profile image
cupjoo1120

asked

Ask a question