본 포스트 시리즈는 「도메인 주도 설계 철저 입문」책을 요약한 내용입니다.
이전 발행 글 보기
2024.09.02 - [DDD/도메인 주도 설계 철저 입문] - 도메인 주도 설계란? - 「도메인 주도 설계 철저 입문」 1장
2024.09.04 - [DDD/도메인 주도 설계 철저 입문] - 값 객체란? - 「도메인 주도 설계 철저 입문」 2장 (1)
2024.09.05 - [DDD/도메인 주도 설계 철저 입문] - 값 객체의 장점 - 「도메인 주도 설계 철저 입문」 2장 (2)
2024.09.09 - [DDD/도메인 주도 설계 철저 입문] - 도메인 엔티티란? - 「도메인 주도 설계 철저 입문」 3장 (1)
2024.09.30 - [DDD/도메인 주도 설계 철저 입문] - 도메인 서비스란? - 「도메인 주도 설계 철저 입문」 4장
2024.09.30 - [DDD/도메인 주도 설계 철저 입문] - 레포지토리란? - 「도메인 주도 설계 철저 입문」 5장 (1)
2024.09.30 - [DDD/도메인 주도 설계 철저 입문] - 레포지토리 구현 방법과 테스트 방법 - 「도메인 주도 설계 철저 입문」 5장 (2)
2024.09.30 - [DDD/도메인 주도 설계 철저 입문] - 레포지토리 구현 시 팁 - 「도메인 주도 설계 철저 입문」 5장 (3)
2024.10.05 - [DDD/도메인 주도 설계 철저 입문] - 유스케이스란? - 「도메인 주도 설계 철저 입문」 6장 (1)
2024.10.05 - [DDD/도메인 주도 설계 철저 입문] - 파사드 패턴으로 유스케이스 구현하기 - 「도메인 주도 설계 철저 입문」 6장 (2)
2024.10.06 - [DDD/도메인 주도 설계 철저 입문] - 유스케이스의 응집도와 구현 - 「도메인 주도 설계 철저 입문」 6장 (3)
2024.10.06 - [DDD/도메인 주도 설계 철저 입문] - 소프트웨어의 유연성을 위한 의존 관계 제어 - 「도메인 주도 설계 철저 입문」 7장
2024.10.13 - [DDD/도메인 주도 설계 철저 입문] - 소프트웨어 구현 - 「도메인 주도 설계 철저 입문」 8장
10장 데이터의 무결성 유지하기
무결성이란?
서로 모순이 없고 일관적이라는 뜻으로, 저자는 무결성이 파괴되는 예시로 유저명이 중복되면 안되는 규칙이 어긋나는 상황을 든다. 데이터 저장 과정에서 트랜잭션 관리 없이 단순히 UserService를 통해 중복 확인만 하고 저장해버리면 동시에 두 사람이 같은 이름으로 등록될 수도 있다.
무결성 보장 방법
1) 트랜잭션 관리 : 자바에서는 대표적인 AOP인 `@Transactional` 어노테이션을 통해 트랜잭션 관리를 할 수 있다. `@Transactional` 어노테이션이 붙은 메소드는 정상 종료되면 트랜잭션을 커밋하고, 예외가 발생하면 롤백한다.
2) ORM API 활용 : 자바의 JPA는 인스턴스의 초기 상태를 기억했다가, 커밋 시에 초기 상태와의 비교를 통해 변경된 부분만 DB에 반영해준다.
트랜잭션 사용시 주의점
DB는 일관성 유지를 위해 트랜잭션을 사용할 때 데이터에 Lock을 건다. 저자 Lock의 범위를 최소화 하는 것이 좋다고 말한다. 하지만 Lock의 범위를 최소화 할수록 트랜잭션을 위한 네트워크 비용이 증가하므로 트레이드오프를 생각하여 설정하는 것이 좋아보인다.
요약
1. 데이터 무결성이란 모순되지 않고 일관적인 것을 말한다. 2. 데이터 무결성 보장 방법에는 트랜잭션 또는 ORM 활용이 있다. 3. 트랜잭션 사용 시 Lock 범위의 최소화와 트랜잭션 비용 최소화 사이에서 적절한 타협이 필요하다. |
'DDD > 도메인 주도 설계 철저 입문' 카테고리의 다른 글
Entity Factory 패턴 - 「도메인 주도 설계 철저 입문」 11장 (2) (1) | 2024.11.22 |
---|---|
DDD 프로젝트 폴더 구조 - 「도메인 주도 설계 철저 입문」 11장 (1) (1) | 2024.11.20 |
팩토리 패턴 - 「도메인 주도 설계 철저 입문」 9장 (0) | 2024.10.13 |
소프트웨어 구현 - 「도메인 주도 설계 철저 입문」 8장 (3) | 2024.10.13 |
소프트웨어의 유연성을 위한 의존 관계 제어 - 「도메인 주도 설계 철저 입문」 7장 (2) | 2024.10.06 |