inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

도메인 주도 개발 시작하기, 오프라인 선점 잠금 질문

165

Recfli

작성한 질문수 3

0

도메인 주도 설계 책을 읽는 중에 오프라인 선점 잠금 부분에서 이해가 안되는 부분이 있어서 해당 책을 읽어보셨거나 구현을 해보신 분 중에 알고 계신 분 있으신가요?

책에 나온 건 처음 세션 얻는 유저(A)가 접근했을 때, LockId를 LockManager로 생성하면 해당 반환된 LockId를 얻는 것까진 나와있는데 도메인이랑 엮어서 타임아웃 전 유저(B)가 LockId를 얻는 방법이 없더라고요.

해당 도메인 엔티티 내에 lock 관련 필드를 하나 만들고 A의 첫 번째 조회 트랜잭션이 끝나기 전에 저장한 다음 B가 그 데이터에 접근할 때, 얻는 방법 밖에 생각이 안나는데 해당 방법이 맞을까요?

ddd 오프라인선점잠금

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Recfli님 질문에 답변드리겠습니다. 제공해드린 정보에는 오프라인 선점 잠금에 대한 직접적인 언급이 없습니다. 하지만, 오프라인 선점 잠금 방식을 구현하는 데 있어서 도메인 엔티티 내에 잠금 관련 필드를 추가하는 것은 일반적인 접근 방식 중 하나입니다. 이를 통해 해당 엔티티가 어떤 사용자에 의해 잠겼는지, 잠긴 시간은 언제인지 등의 정보를 관리할 수 있습니다.

또한, Spring Data JPA나 JDBC와 같은 기술을 활용할 때 @Lock 어노테이션을 사용하여 데이터 접근 시 잠금 모드를 명시적으로 지정할 수 있습니다. 예를 들어, Spring Data JPA에서는 @Lock(LockModeType.READ)와 같이 사용하여 데이터를 읽는 동안 다른 트랜잭션의 변경을 방지할 수 있습니다. 이처럼 잠금 메커니즘을 적절하게 활용함으로써 동시성을 관리하고 데이터 무결성을 유지할 수 있습니다.

도메인 주도 설계 측면에서 오프라인 선점 잠금 구현은 애플리케이션의 복잡도와 요구 사항에 따라 다르게 접근할 수 있으므로, 자세한 구현 방법은 프로젝트의 구체적인 상황을 고려하여 결정하는 것이 중요합니다.

도움이 되셨길 바랍니다. 추가적인 질문이 있으시다면 언제든지 문의주세요.

도메인 모델에서 관계와 규칙을 구분하는 방법

0

41

2

애그리거트 질문있습니다!

0

33

2

헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?

0

119

2

어댑터에서 도메인에 직접 의존하는 경우에 대해

0

122

2

Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.

0

105

2

MemberService와 EmailSender 책임 분리에 대한 질문

0

103

2

NonNullApi를 NullMarked로 대체하라고 합니다.

0

125

2

39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.

0

74

2

도메인 질문있습니다

0

50

2

MSA 질문이 있습니다

0

70

1

Repository Adapter 설계에 대해 피드백을 부탁드립니다

0

108

2

초기 어플리케이션 구동 시 compose.yml 파싱 오류

0

148

2

애플리케이션의 JPA 리턴과 도메인 모델

0

128

2

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

0

135

2

페이징 처리를 해야한다면 어떻게 해야할까요?

0

188

2

애그리거트의 repository

0

118

2

Domain Expert가 정확히 어떤 역할을 하는 사람인가요?

0

233

1

회원 애플리케이션 서비스 테스트 (1)

0

106

2

정적 팩토리 메서드 관련 질문드립니다!

0

105

2

required 포트에 관해서

0

93

2

혹시 다음 편은 언제쯤 오픈할까요?

0

167

2

서비스 단위 테스트 코드 작성

0

97

2

domain 모듈에 entity를 정의한다고 했을때

0

100

2

여러 엔티티의 조합으로 리포트를 제공해야할 때

0

80

2