본문 바로가기

Repository3

DDD - Repository - 출처: 도메인 주도 설계 - 에릭 에반스 - Repository 하나의 객체에서 다른 객체를 탐색하려면 연관관계(association)을 이용하면 된다. 하지만 객체의 생명주기 중간에도 Entity나 Value를 탐색할 수 있는 진입점이 필요하다. 어떤 객체의 참조를 얻기 위한 방법에는 아래와 같은 방법들이 있다. 생성 연산으로 객체를 생성 연관관계를 이용한 탐색 영속화 계층으로 부터 검색 DB 검색은 어디서든 이용가능하며 곧바로 어떤 객체에도 접근 가능하게 해준다. 프로그램내에서 모든 객체가 서로 상호연결이 되어야 하는것은 아니다. 탐색 혹은 검색에 의존하느냐는 설계 결정 사항이다. Customer 객체가 모든 Order에 대한 컬렉션을 가지고 있는 방식이 될수도 있으며 Customer ID를 이용.. 2022. 9. 18.
DDD - Factory - 출처: 도메인 주도 설계 - 에릭 에반스 - Factory 어떤 객체나 Aggregate를 생성하는 일이 복잡해지거나 혹은 내부 구조가 너무 많이 드러나는 경우 Factory를 통해 캡슐화를 제공할 수 있다. 우리는 자동차를 운전할 때 어떻게 조립 되었느냐는 신경쓰지 않는다. 두 가지 행위는 같은 시간에 일어나지 않으며, 이런 기능이 동일한 매커니즘에 결합되어 있는것은 의미가 없기 때문이다. 이를 객체 생성관점에 빗대어 생각해보면 복잡한 객체를 생성하는 일과 생성된 객체가 하는 일은 관련성이 적다고 생각할 수 있다. 프로그래밍 언어의 기본적인 내용을 학습할 때 main과 같은 함수에서 곧바로 객체를 생성한다. 이런식으로 client가 객체를 생성해서 사용하면 되는데 왜 굳이 Factory를 통해 캡슐.. 2022. 9. 12.
DDD - 도메인 객체의 lifecycle과 Aggregate - 출처: 도메인 주도 설계 - 에릭 에반스 - 도메인 객체의 생명주기 일반적으로 객체를 사용하는 과정을 생각해보자. 생성자로 객체를 생성한 뒤 연산에서 사용하며 직접 해제하거나 참조관계를 끊으면 GC와 같은 수집기로 보내져서 소멸하는 과정을 거치게 된다. 도메인 객체는 이런 기본적인 생명주기 말고도 특별히 더 고려해야하는 점들이 있다. 우선 생명주기 동안 무결성을 유지해야 하며 생명주기를 관리해주어서 모델이 난해해지는것을 방지한다. 이 말을 지금 당장은 자세하게 이해하지 못해도 상관없다. 뒤이어 설명할 aggregate 항목을 보면 완전히 이해할 수 있을것이다. DDD에서는 이를 해결하기 위해 Aggregate(집합체), Factory, Repository 3 가지 패턴을 제시한다. Aggregate:.. 2022. 9. 10.