Editor....를 활용한 패턴에 질문있습니다.
492
15 asked
- 당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세
- 문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.
Post엔티티에 비즈니스 로직을 작성하고
단순하게 PostEdit을 전부 넘겨 비즈니스 로직 change를 호출하여 더티체킹으로 마무리! 이렇게 했을 경우, 파라미터 순서에 무관하게 PostEdit이라는 수정을 위한 Dto 객체를 단 하나만 넘겨 수정을 할 수 있다고 판단했습니다. 물론 위 비즈니스 로직은 null값에 대처는 못하겠지만요! 하지만, 프론트 개발자와 상의하여 '수정 시, 모든 데이터를 넘겨준다는 전제' 에서는 가장 간단한 방법이라고 생각했습니다! [Editor를 작성해보며 느낀 의문점]Post의 toEdit을 통해 기존 가지고 있던 데이터를 PostEditor에게 넘김으로써 Builder에서 null값에 대응할 수 있다는 점 이외에는 또 다른 장점을 이해하지 못하고 있습니다. Request의 title혹은 content가 null일 경우 이를 해결하기 위한 방법을 제시해주는 것 말고는 되려 관리해야 할 것들만 늘어난 느낌이 해소가 되지 않습니다 ㅠㅠ 그래서 제가 이해한 것 까지의 내용들이 잘 이해한 것인지 그리고 추가적으로 제가 이해하지 못한 것들을 이해하고 싶습니다! - findById로 수정하려는 엔티티를 가져옵니다.
- toEdit()을 통해 현재 수정하고자 하는 엔티티의 필드들을 PostEditor에게 넘겨 빌더를 만듭니다. 이는 수정하려는 엔티티가 현재 가지고 있는 필드들을 핸들링 할 수 있도록 해줍니다. (가령, title혹은 content의 null 처리)
- 2번을 통해서 PostEditor가 현재 수정하려는 Post의 필드들을 주입 받았으면, Request로 받은 데이터를 통해 최종 build()를 해줍니다.
- 변경사항을 모두 적용한 postEditor를 Post의 변경비즈니스 메서드 edit(postEditor)를 통해 더티체킹으로 변경해줍니다.
이런 방식으로 진행한다면 문제가 있을까요? 긴 글에 시간 내어주셔서 감사합니다 !
Answer 1
0
https://www.inflearn.com/course/lecture?courseSlug=%ED%98%B8%EB%8F%8C%EB%A7%A8-%EC%9A%94%EC%A0%88%EB%B3%B5%ED%86%B5-%EA%B0%9C%EB%B0%9C%EC%87%BC&unitId=111160&category=questionDetail&tab=community&q=647518
더 찾아보니 위 질문글에서 1번 코드에 대한 피드백이 제 궁금증에 가장 가까운 답변이었습니다!
하지만, 그럼에도 제 지식이 따라가지 못하는 것 같아 아쉽네요 ㅠ
Post가 서비스 정책인 PostEdit을 아는 것과
Post가 PostEditor아는 것의 큰 차이를 못 느끼겠습니다..
PostEdit도 수정을 위해서 만든 정책이기에 같은 형태인 PostEditor를 하나 더 만들기 보다는
어차피 테스트에서 PostEditor를 알아야 하듯, PostEdit을 알아야하는 것과 큰 차이가 있는 것인가요?!
설계적인 측면에서 PostEdit을 '서비스정책'이고 PostEditor는 그렇지 않음에서 오는 관심사를 완벽히 분리하고자 하는 것이 목적일까요?
0
안녕하세요. 호돌맨입니다.
PostEdit은 web(presentation layer) 계층입니다.
Post가 표현 계층을 알 필요가 없기 때문에 구분되어 있습니다.
또한 수정할 수 있는 범위를 최소화 하기 위해 PostEditor를 제약을 두고있습니다. (PostEditor에는 수정할 수 있는 field만 들어갈 수 있으니깐요)
감사합니다.
Deprecated 관련 사항들
0
100
2
깃헙 collaboator 초대 관련
0
86
1
강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다
0
157
2
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
0
229
1
다중 데이터를 삭제 할 때
0
270
2
querydsl Q class 이슈
0
413
2
Windows WSL Vue 설정
2
246
1
Dip, @transactional
0
187
1
[vite] http proxy error: /auth/login
0
1040
2
로그인 하고 나서 GET요청으로 메인페이지 요청
0
234
2
GitHub Collaborator 초대 관련
0
256
2
Window에서 Vue.js 설정
0
321
2
(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"
0
712
2
collaboator로 초대받을 수 있을까요??
0
283
2
SecurityMockContext 로부터 유저 정보를 가져오기
0
260
1
given 부분이 길어질 때 어떻게 처리하면 좋을까요?
0
317
1
섹션9 프론트의 코드를 보고싶습니다,,,
0
423
1
Spring Security - defaultSuccessUrl 질문
0
624
1
강의 화면이 나오지 않습니다. 음성과 자막만 나와요
0
302
1
JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ
0
689
2
ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상
0
1178
2
섹션10 언제 나오나요?
0
482
1
CommentService에서 Repository를 호출하지 않는데도
0
340
1
섹션9 vue
0
450
2

