inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

프로필 주소(profile_address) 제거 시 Unique 위반에 관한 질문

해결된 질문

94

이신행

작성한 질문수 1

0

안녕하세요 토비님! 항상 강의를 통해 새로운 시야를 얻는 것 같아 감사하게 듣고 있습니다!

강의를 수강하던 중 궁금한 점이 하나 생겨 질문 드립니다.

우선 현재 Section7, 39강까지 수강한 상태입니다.

 

도메인 규칙 상으로 프로필 주소가 제거 가능하다고 정해졌고, 이는 코드로 상세히 표현되었다고 생각했습니다.

하지만 "프로필 주소는 제거할 수 있다"라는 규칙을 적용해 memberA가 프로필 주소를 빈 문자열 형태로 변경한다면, memberB의 경우 동일하게 빈 문자열을 저장할 수 없으니 프로필 주소를 제거할 수 없는 것 아닌가라는 생각이 들었습니다.

그래서 기존 Github에 공개된 코드 테스트에서 실험을 진행했습니다. (제 코드는 차이가 있을 수 있어서 공개된 자료를 이용했습니다.)

 

MemberRegisterTest#updateInfoFail 에 아래와 같이 테스트를 추가해 보니

entitymanager.flush() 부분에서 Unique index or primary key violation 이 발생했습니다.

에러 테스트.png

 

제 생각에는 도메인 규칙을 변경하거나, profile_address의 값이 빈 문자열일 경우 NULL을 저장하도록 로직을 변경해야한다고 생각합니다.

혹시 제가 놓친 부분이 있는지, 토비님의 의견은 어떠신지 궁금합니다.

 

항상 감사하게 수강하고 있습니다!

java spring spring-boot jpa 리팩터링 ddd

답변 1

0

토비

앗. 제거시 공백 문자로 바꾸면 중복 문제가 발생한다는 것을 놓쳤네요. 말씀하신 대로 DB 필드에 unique 조건이 걸려있더라도 문제가 되지 않도록 제거시 null 값으로 설정해야 하는 것이 맞습니다.

다른 분들이 지적해주신 내용들에 더해서 이 내용도 반영해서 다음 강의에 이어서 설명하도록 하겠습니다. 감사합니다.

0

이신행

답변 감사합니다. 다음 강의도 기대하겠습니다!

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

0

37

2

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

0

115

2

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

0

116

2

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

0

103

2

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

0

102

2

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

0

123

2

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

0

71

2

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

0

105

2

헥사고날 part2 강의 출시 예정일 문의 드립니다.

0

244

2

PT 문의사항

0

97

1

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

0

147

2

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

0

125

2

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

0

133

2

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

0

187

2

애그리거트의 repository

0

116

2

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

0

228

1

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

0

102

2

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

0

103

2

spotbug + @NonNullApi 로만 Null 방어가 될까요?

0

127

2

required 포트에 관해서

0

90

2

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

0

163

2

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

0

94

2

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

0

95

2

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

0

78

2