[DDD] 오프라인 선점 잠금 관련 LockManager 인터페이스와 관련 클래스
Uploaded by N2T
- 도메인주도개발
- · 2024. 1. 25.
이벤트 구성 요소이벤트(Event)도메인 모델의 상태 변화를 나타내는 사건이벤트 생성 주체(Event Creator)엔티티, 밸류, 도메인 서비스 등의 도메인 객체로, 도메인 로직을 수행해서 상태가 변경될 때 관련 이벤트를 발생시킴.이벤트 디스패처(Event Dispatcher/Publisher)이벤트 생성 주체가 발생시킨 이벤트를 적절한 이벤트 핸들러에게 전달하는 역할이벤트의 생성과 처리를 동기 또는 비동기 방식으로 선택적으로 처리가능이벤트 핸들러(Event Handler/Subscriber)이벤트에 반응하여 특정 기능을 수행하는 구성요소주문 취소됨 이벤트 를 받는 이벤트 핸들러의 경우 주문 취소 사실을 주문자에게 SMS 으로 전달이 가능하다.이벤트예시이벤트 의 구성 요소이벤트 종류이벤트 발생 시간추가..
이벤트(Event)의 정의이벤트(Event)과거에 발생한 어떤 사건을 의미함.예사용자가 암호를 변경한 경우 → '암호 변경됨 이벤트' 발생주문이 취소된 경우 → '주문 취소됨 이벤트' 발생이벤트와 UI 개발UI 컴포넌트는 관련된 이벤트를 발생시킨다,예버튼 클릭 → '버튼 클릭됨 이벤트' 발생스크롤 동작 → '스크롤 됨 이벤트' 발생이벤트 발생은 상태 변경을 의미합니다.'암호 변경됨 이벤트'는 사용자의 암호 변경을 의미합니다.'주문 취소됨 이벤트'는 주문 취소를 의미합니다.이벤트 기반 프로그래밍이벤트는 단순히 발생하는 것에 그치지 않고, 이벤트에 반응하여 원하는 동작을 수행하는 기능을 구현합니다.예시 코드 (jQuery 사용):$("#myBtn").click(function(evt) { alert("경고"..
계산 로직과 도메인 서비스할인 금액 계산과 같이 애그리거트에 포함시키기 애매한 도메인 개념을 구현할 때도메인 서비스를 사용해서 해당 개념을 명시적으로 표현할 수 있음.서비스 응용 영역이 어떤 서비스에 대한 로직을 다루는 반면에 도메인 서비스에서는 도메인 로직과 관련되어 있지만 도메인 안에서 처리하기 더 범위가 넓은 개념의 로직을 해당 도메인 서비스 로 옮긴다.할인 금액 로직을 위한 DiscountCalculationServicepublic class DiscountCalculationService { public Money calculateDiscountAmounts( List orderLines, List coupons, MemberGrade grade) { Money couponDiscount = c..
개요외부 시스템이나 타 도메인과의 연동 기능도 도메인 서비스가 될 수 있음.도메인 서비스는 도메인의 로직 관점에서 인터페이스를 작성, 인프라스트럭처 영역에서 구현예시도메인 서비스 인터페이스public interface SurveyPermissionChecker { boolean hasUserCreationPermission(String userId); }응용 서비스public class CreateSurveyService { private SurveyPermissionChecker permissionChecker; public Long createSurvey(CreateSurveyRequest req) { validate(req); // 도메인 서비스를 이용해서 외부 시스템 연동을 표현 if (!perm..
개요아틀라시안의 컨플루언스의 경우 문서를 편집하는 경구 다른 사용자가 이미 편집중인 경우, 충돌 가능성을 사전에 안내하는 기능을 제공함.여러 사용자가 동시에 한 문서를 수정할 때 발생하는 충돌을 방지함.오프라인 선점 잠금?한 사용자가 문서를 편집할 때 다른 사용자가 해당 문서의 수정 화면을 열지 못하도록 하는 기능입니다.이는 단일 트랜잭션에서의 선점 잠금 방식과는 달리 여러 트랜잭션에 걸쳐 동시 변경을 방지할 수 있다고 한다.작동 원리사용자 A가 문서 수정 폼을 요청하면 시스템은 오프라인 잠금을 구한다.사용자 B가 동일한 문서의 수정 폼을 요청하면이미 잠금이 선점된 상태이므로 잠금을 구할 수 없고, 에러 화면이 표시됩니다.사용자 A가 수정을 완료하고 요청을 보내면시스템은 데이터를 수정하고오프라인 잠금을 ..
Uploaded by N2T