인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

원석나님의 프로필 이미지
원석나

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

게시글 수정

toEditor 메소드를 사용하는 의미가 잘 와닿지 않습니다 강사님!

해결된 질문

작성

·

590

2

Post클래스를 사용하지 않고 PostEditor 클래스를 만들어서 이 클래스에 수정하고 싶은 내용들을 필드로 담아두면 이 클래스는 수정하려는 클래스 이다 , 여기에 있는 필드들은 수정이 가능하다 라는 의미를 다른개발자분들에게 의미부여 할 수 있을것 같은데요!

 

toEdit 메소드가 없이 그냥 PostEditor 클래스에 빌더 패턴으로 생성자를 만들어 save 로 사용하면 될  것 같은데 굳이 toEdit 메소드를 만드신 의미가 어떤건지 궁금합니다!

답변 1

0

호돌맨님의 프로필 이미지
호돌맨
지식공유자

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

(현재는 코드에는 빠진 부분이 있어서.. 말씀하신대로 요청 들어온 데이터를 빌더 패턴으로 생성자를 만들어 save하시는것과 큰 차이가 없습니다.)

만약 수정 요청 데이터에 title값이 빠진 상태로 들어오면 title 값이 null로 들어가질 수 있는 부분을 보안하기 위해서입니다.
Post Entity내에 toEditor를 따로 만들면 현재 Post가 갖고 있는 데이터(title, content)를 유지 시킬 수 있는 방법이 생깁니다.

아래와같이 빌더생성자 안에 null 체크 같은 게 추가로 들어가야합니다.

(2022년 9월 17일 추가)
아래 코드는 잘못된 예제입니다. 참고하지마세요 (
https://www.inflearn.com/questions/653374)

@Getter
public class PostEditor {

    private final String title;
    private final String content;

    @Builder
    public PostEditor(String title, String content) {
        this.title = title != null ? title : this.title;
        this.content = content != null ? content : this.content;
    }
}

이런 부분에 대해 직접 문제를 경험 해보시려면 PostEdit에 있는 @NotBlank를 제거하시고
수정 요청 json에 일부 데이터를 누락해서 보내보세용!
그리고 직접 수정용 Builder를 만들어 써보시면 와닿으실것 같습니다.

혹시 이해가 잘 안되시면 언제든 더 물어봐주세요.

감사합니다.

원석나님의 프로필 이미지
원석나
질문자

아 ~  이해가 갔습니다 
답변 너무 감사드립니다 강사님 !

 

원석나님의 프로필 이미지
원석나

작성한 질문수

질문하기