글또
qna 피드백 (미션-5)
Gisungcu
2021. 3. 28. 14:56
이번 미션은 ajax를 사용하는 미션이었다.
근데 ajax보단 dto 쪽을 더 많이 만진 것 같다.
피드백은 wheejuni님이 담당해 주셨다.
처음의 설계는 service에서 dto를 반환하는 것이 아닌 controller에서 dto로 변환시키는 것이었다.
이로 인해서 controller의 역할은 조금 모호해졌다고 생각했다,
후에는 애초에 service에서부터 dto를 반환해 주는 쪽으로 변경을 하게 되었다.
Entity 내부에서 dto로 변환해 주면 메서드 체이닝이 이쁘게 된다.
그렇게 하고 싶어서 내부에 로직을 추가했는데, 아뿔싸 단일 책임원칙을 기억하는가? 나는 그 부분을 놓치고 있었던 것 같다. 과연 returnDto가 비즈니스 로직일까? 생각해보니 절대 아닌 것 같다.
dto내부에 클래스 메서드를 만들어 controller나 service에서 사용하도록 변경을 했다.
예전에 빌더 패턴을 공부했던 것이 생각이 났다.
당시에는 확실히 좋은 방법이라고 생각을 했다. 근데 entity 자체를 넘겨주어서 dto로 만드는데 빌더를 사용함으로써 얻는 이점을 아직은 잘 모르겠다.
dto를 도입하면서 가장 큰 문제를 만났다.
service에서 dto를 반환하는 것은 ok.
근데 session에 저장해야 하는 것은 entity일까? dto일까? 이 부분이 고민이었다.
이전 코드는 전자처럼 되어 있었는데, 나중에는 dto를 저장하는 형태로 바뀌었다.
결론적으로 말하자면 session에는 entity가 저장돼도 괜찮다는 생각이다.