-
TIL 169일 - DDD, Transaction 어노테이션공부/개발 전체적인 2022. 6. 16. 23:39
뜬금없지만... 음... DDD, TDD 이런 것들은 공부를 하더라도 한 순간에 습득이 되는 공부는 아닌 거 같다. 몰랐던 사실이 아니긴 하지만 그래도 한번 더 생각이 들었다.
실제 도메인 모델의 엔티티와 DB 관계형 모델의 엔티티는 같은 것이 아니다.
표현 영역(Presentation)
사용자가 전송한 데이터 형식이 올바른지 검사한다.
사용자가 전송한 데이터를 application service가 요구하는 형식으로 변환해서 전달한다
Application Service
도메인 모델을 이용해서 기능을 구현한다.
도메인의 상태를 변경하므로 변경 상태가 물리 저장소에 올바르게 반영되도록 트랜잭션을 관리해야 한다.
애그리거트
도메인 규칙에 따라 함께 생성되는 구성요소는 한 애그리거트에 속할 가능성이 높다.
애그리거트에 속한 모든 객체가 일관된 상태를 유지하는 책임은 애그리거트의 루트 엔티티에게 있다.
애그리거트 루트의 핵식 역할은 애그리거트의 일관성이 깨지지 않도록 하는 것이다.
도메인 모델에 대해 가져야할 두 가지 습관
- 단순히 필드를 변경하는 set 메서드를 public으로 만들지 않는다.
- value 타입은 불변으로 구현한다.
레포티토리와 애그리거트
레포지토리는 애그리거트 단위로 존재한다.
보통 2개의 메서드를 기본적으로 제공한다.
- save: 애그리거트 저장
- findById: ID로 애그리거트를 구한다.
JPA를 사용하면 DB 관계형 모델에 객체 도메인 모델을 맞춰야할 때가 있다.
@Transactional
사용 방법
- 트랜잭션을 적용하고 싶은 클래스, 메서드에 어노테이션을 달아준다.
/* 아니 이게 끝...? */
참고글
https://tecoble.techcourse.co.kr/post/2021-05-25-transactional/
Transactional 어노테이션
@Transactional…
tecoble.techcourse.co.kr
'공부 > 개발 전체적인' 카테고리의 다른 글
TIL 171일 - 이뮤터블 클래스 장점 (0) 2022.06.18 TIL 170일 - TDD - 설계에 문제가있는 테스트 (0) 2022.06.18 TIL 168일 - 테스트코드 작성하다가 생긴 의문 (0) 2022.06.16 TIL 167일 - 복잡한 행동을 하는 REST API의 네이밍은 어떻게...? (0) 2022.06.15 TIL 165일 - DDD (0) 2022.06.12