애그리거트(3)
-
리포지터리와 모델 구현
매핑 구현 - 애그리거트와 JPA 매핑을 위한 기본 규칙 - 애그리거트 루트는 엔티티이므로 @Entitiy로 매핑 설정 - 벨류는 @Embeddedable로 매핑 설정 - 벨류 타입 프로퍼티는 @Embedded로 매핑 설정 - 타 애그리거트는 ID로 참조 AttributeConverter - int, long, String, LocalDate 같은 타입은 DB 테이블에 한 개의 컬럼에 매핑됨. - 이와 비슷하게 벨로타입의 프로퍼티를 한 개의 컬럼에 매핑해야할 때도 있음. - AttributeConverter을 통해 벨류 타입과 칼럼 데이터 간의 변환 처리 가능 - 벨류 컬렉션을 별도 테이블로 매핑시에는 @ElementCollection과 @CollectionTable을 함께 사용 - List에 자체 인덱..
2023.07.28 -
애그리거트
애그리거트 - 도메인 객체 모델이 복잡해지면 전반적인 구조나 큰 수준에서 도메인 간 관계를 파악하기 어려워짐. -> 코드 변경/확장 난이도 상승 - 애그리거트를 통해 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들 수 있음. - 애그리거트를 통해 관련 객체를 하나의 군으로 묶을 수 있고, 상위 수준에서 도메인 모델 간 관계 파악 가능 - 애그리거트는 모델을 이해하는 데 도움을 줄 뿐 아니라 일관성 관리 기준도 됨. - 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클 가짐 - 애그리거트는 경계를 가짐 -> 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않음 - 애그리거트 경계를 설정할 때 기본이 되는 것은 도메인 규칙과 요구사항 - 도메인 규칙에 따라 함께 생성되는 구성 요소는 한 ..
2023.07.19 -
3장 : 마이크로서비스 어플리케이션 아키텍처
# DB 중심 아키텍처 문제점 DB 중심 아키텍처 : 특정 RDB에 의존한 데이터 모델링을 수행한 다음 이 물리 테이블 모델을 중심에 두고 APP을 구현하기 위한 사고를 하는 방식 - 간단한 처리 로직은 편하나, 업무가 복잡해지면 점점 복잡성을 제어할 수 없음 - DB에 의존하게 되어 스케일 아웃 성능이 떨어짐 # 레이어드 아키텍처 프레젠테이션, 비즈니스로직, 데이터 엑세스 3계층으로 구분하는 것이 일반적 ## 레이어드 아키텍처 규칙 - 상위 계층이 하위 계층을 호출하는 단방향성 유지 - 바로 밑의 근접 계층만 활용 - 상위 계층이 하위 계층에게 영향 받지 않게 구성 - 하위 계층은 자신을 사용하는 상위 계층을 알지 못하게 구성 - 계층 간의 호출은 인터페이스를 통해 호출(의존성 분리) 현대 APP은 다..
2023.05.19