지금 개인 토이 플젝 하고있는데
기존에는 도메인 객체에는 테이블에 매핑할 필드만 쓰고 Entity <-> DTO 정도 변환하는 메서드 정도랑 양방향 관계 있으면 연관관계 맺어있는 객체에 똑같이 값 넣어주는 메서드 정도..?
그 외 나머지는 전부 Service 레이어에 넣었습니다 나머지 검증 로직은 따로 Validate 클래스 만들어서 거기서 검증 로직 짰고, 그게 맞는줄 알고있었는데
우아한 테크코스 채널에서 우아한 객체지향 조영호님 영상 봤는데 엔티티 객체에도 비지니스 로직을 좀 넣으셔서
갑자기 궁금해져서 좀 찾아봤는데
엔티티 계층은 날씬하고 서비스 계층이 비대하시다면, 서비스 계층의 로직들을 최대한 엔티티 계층으로 끌어내려보시는 걸 추천드립니다. 대부분의 서비스 계층은 결국 엔티티 객체들을 불러와서 메서드들을 호출하는 역할만으로도 충분하다는 것을 발견하실 거예요
엔티티에 비즈니스 로직 몰빵은 잘하고 있는데, 엔티티가 너무 커지고 관심사별로 분리가 잘 안된다고 느끼시나요? Bounded Context 개념을 적용해보세요. 같은 도메인이어도 관심사가 다르면 더 하위의 도메인으로 나뉘어야 합니다.
이런 글을 봤습니다
어찌 생각하시나요?
뭔가 머리에 혼동이와서 정리가 안되네요 ..
기본적으로 핵심 도메인 로직은 엔티티가 갖고있는게 최선이고 오히려 니가 말한 dto 변환로직은 엔티티가 모르는게 정상임 새 dto가 필요하면 또 엔티티에 넣을거야?
이말이 이해가 안되면 객체지향의 껍떼기만 알고 있는 거지 그 철학을 알지 못하는거임 객체지향 철학부터 다시 공부하셈. 자바도 스프링도 결국은 객체지향을 위해 존재하는 개념임
변환하는건 라이브러리 쓰면 되지않음?
오히려 dto변환을 모르는게 좋지않을까 mapstruct라는 ㅈㄴ편한게잇숴
그리고 검증로직이 뭘 검증하는건지 몰루겟는데 보통 입력을 검증한다면 깐튜롤러에서 검증해야하지않을까
어떤게 어떤 계층까지 내려가지말아야 잘 끊어먹고 돌려먹을 수 있는지 생각해봐야할듯
ㅇㅅㅇ - dc App