아니 도메인 로직? 서비스 로직? 응용 서비스? 뭐? ㅎ.. ㅇㅇㅇ이 뭔데 ㅠ ㅇ뭔쓉.. 한다. ㅇㅇㅇ공부. ㅇㅇㅇ
도메인
: 소프트웨어로 해결하고자 하는 문제 영역 = 해결해야할 영역
- 이뭔쌉 : 소웨공에서 요구사항 겁나 배웠잔 그 요구사항 그 잡채
- 그 요구사항 = 도메인을 개념적으로 표현한 것 -> 도메인 모델
- 도메인 주도 개발 = Domain Driven Design = DDD = ㅇㅇㅇ ㅋㅋ
- 엔티티랑 같은 말인 줄 알았는데 살짝쿵 다름
- 엔티티 : 구분 가능해야함 = 고유한 식별자 가져야함 = DB 패키징 역할
ㄴ> user 이런 객체들 ㅇㅇㅇ
- 이런 엔티티를 도메인 모델로 확장해서 봐도 크게 문제 없어서 비슷하게 쓰는 듯
애그리거트
: 관련된 객체들을 모아 하나의 단위로 취급하는 개념
- 객체간의 관계 정의
- 논리적으로 관련된 객체들 그룹화
- 즉, 여러개 객체를 묶어 하나의 큰 객체로 = 암튼 객체 엔티티라고 봐도 됨(내뇌피셜)
- 이 친구는 아래의 도메인 서비스 이용 가능
- 도메인 서비스를 애그리거트에 주입하는 것은 좋지 않음(@Autowired)
- 애그리거트 내의 모든 매서드가 그 도메인 서비스를 사용하지 않으니까 굳이~ 넣지마
- 응용 서비스에서 전달 받아서 사용
- 우리가 아는 그 레파토리 그친구는 애그리거트 단위로 존재
- user 많이 쓰자나 user = 애그리거트, user 안에 들어가는 객체들 이름~전화번호~사용자가 속한 직급~ 뭐 이런거 개네는 객체 ㅇㅇㅇ
도메인 서비스
- 애그리거트와의 가장 큰 차이점 : 상태가 없음 only 로직만 구현
- 애그리거트의 상태 변경
- 애그리거트의 상태 값 계산
- 여러 애그리거트 사용해서 하나의 기능이 되는거지 ㅇㅇㅇ
- 말은 서비스여도 전형적인 소프트웨어 아티텍처의 컨트롤러, 서비스, 도메인 등 패키지 구조에서 도메인 패키지에 들어감 ㅇㅇㅇ
응용 서비스
- 그 내~가 알고 너~가 알던 그 서비스 패키지에 들어가는 그 친구임
- 보통 레파지토리 접근하는 그 친구
- 얘도 도메인 서비스 이용 가능 ㅇㅇㅇ
- 응용 서비스가 도메인 서비스를 애그리거트에게 전달
[ ] 책 읽기 .. - 도메인 주도 개발 시작하기