You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
핵심 개념: 도메인 모델의 구성 요소는 애그리게이트, 값 객체, 레포지토리이다.
도메인 모델은 행동과 데이터 모두를 표현하는 모델이다.
값 객체(Value Object): 예를들어 금액(Money), 기간(Period), 사람 이름(Name)을 값 객체로 만들어 볼 수 있다.
엔티티(Entity): 값 객체와 다르게 식별할 수 있는 객체이다. 식별 필드가 존재해야 한다.
애그리게이트(Aggregate): 여러 엔티티의 일관성, 불변식을 지킬 수 있게해주는 엔티티이다.
엔티티 계층 구조를 대표하는 엔티티이기 때문에 애그리게이트 만으로 상태를 변경해야 한다.
상태 변경시 일관성을 지킬 수 있게 해주며, 트랜잭션의 경계 역할을 한다.
일관성이 필요한 정보만 애그리게이트에 포함돼야 한다.
애그리게이트의 변화가 다른 애그리게이트에 영향을 미친다면 도메인 이벤트를 사용한다.
// Pseudocode
@Entity
classTicket(
valcustomer:Long, // 애그리게이트 경계가 다른 ID 간접 참조valassignedAgent:Long, // 애그리게이트 경계가 다른 ID 간접 참조
@OneToMany
valmessages:List<Message>,
@Id
valid:Long = 0L
) {
// 상태를 변경하는 함수funxxx() {
// messages 검증// 상태 변경
}
}
레포지토리(Repository): 애그리게이트 모델을 영속화할 때 사용한다.
예를들어,주문(Order:1)-주문아이템(OrderItem:N)인 애그리게이트가 있다고 가정하자. 애그리게이트 루트는 Order이므로 OrderRepository만을 이용해서 주문과 주문아이템을 영속화 시켜야한다.
❓ 궁금한 점 및 논의할 주제
질문 1: 도메인 서비스는 언제 사용하는지 수도코드 또는 글로 작성해 주세요. (chat-gpt 퍼오기 금지)
🔍 추가 참고 자료
🗒 기타 메모
The text was updated successfully, but these errors were encountered:
📅 2024.08.13 - 복잡한 비즈니스 로직 다루기
📝 학습 내용 요약
🧠 이해한 내용
핵심 개념: 도메인 모델의 구성 요소는 애그리게이트, 값 객체, 레포지토리이다.
도메인 모델은 행동과 데이터 모두를 표현하는 모델이다.
값 객체(Value Object): 예를들어 금액(Money), 기간(Period), 사람 이름(Name)을 값 객체로 만들어 볼 수 있다.
엔티티(Entity): 값 객체와 다르게 식별할 수 있는 객체이다. 식별 필드가 존재해야 한다.
애그리게이트(Aggregate): 여러 엔티티의 일관성, 불변식을 지킬 수 있게해주는 엔티티이다.
예를들어,주문(Order:1)-주문아이템(OrderItem:N)인 애그리게이트가 있다고 가정하자. 애그리게이트 루트는 Order이므로 OrderRepository만을 이용해서 주문과 주문아이템을 영속화 시켜야한다.
❓ 궁금한 점 및 논의할 주제
🔍 추가 참고 자료
🗒 기타 메모
The text was updated successfully, but these errors were encountered: