inflearn logo
강의

講義

知識共有

トビーのクリーン・スプリング - ドメインモデルパターンとヘキサゴナルアーキテクチャ Part 1

文書とコードの洗練

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

69

wltn858489

投稿した質問数 1

0

MemberDetail 테이블의 UK_MEMBER_DETAIL_PROFILE_ADDRESS 유니크 제약 조건과 관련해서 질문이 있습니다.

39장 강의 마지막 부분에서, 해당 프로파일 주소(profile_address)를 빈 문자열로 바꿔 삭제할 수 있는 부분 테스트를 추가 하셨는데, 그런데 이렇게 되면 여러 사용자가 프로필 주소를 빈값으로 변경 할 경우 제약 조건에 충돌이 발생할 수 있을 것 같습니다.

profile_address 값을 빈값으로 설정할 수 없도록 테스트를 조정하는게 더 맞아 보이는데 제가 생각한게 맞을까요?

java spring spring-boot jpa 리팩터링 ddd

回答 2

0

tobyilee

안녕하세요. 말씀하신 대로 unique 제약 조건이 있는 경우 NULL 값은 상관없지만 빈 문자열은 중복 문제가 생길 수 있습니다. 강의 때는 그 부분을 체크 못했네요. 이전에 같은 질문을 주신 분이 계셔서 해결 방법을 이야기했습니다. 빈 문자열로 세팅하더라도, 값을 NULL로 등록되도록 조정을 하는 방법을 사용해야 합니다. 해당 질문은 다시 찾아보겠습니다.

0

wltn858489

답변 감사합니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 지수님!

프로필 주소를 빈 값으로 바꿀 때 발생할 수 있는 제약 조건 문제에 대해 잘 짚어 주셨습니다. 이러한 문제는 데이터베이스에서 unique 제약 조건을 충족해야 하기 때문에 실제로 사용해보면 빈 문자열이 중복되는 상황으로 인해 오류가 발생할 수 있습니다.

해결 방안

현재 프로필 주소를 “빈 값”으로 바꾸면 데이터베이스의 유니크 제약 조건(unique constraint)에 위배될 가능성이 큽니다. 따라서 다음과 같은 방법으로 이 문제를 해결할 수 있습니다:

  1. NULL 값으로 취급하기: 빈 문자열을 저장하는 대신, 프로필 주소가 제거될 때 실제로는 NULL로 저장하여 제약 조건 위반을 방지할 수 있습니다. 이 방법은 많은 시스템에서 옵션 필드를 처리하는 일반적인 방법 중 하나입니다.

  2. 디폴트 값 사용: 빈 문자열을 디폴트(non-unique) 값으로 설정하여, 유니크 제약 조건을 피할 수 있지만, 이는 엄밀히 말하면 ‘빈 값’으로 처리되는 것이 아니기에 고려해볼 다른 방법이 될 수 있습니다.

이와 관련해서 유사한 질문과 답변을 참조하시면 도움이 될 것 같습니다. 아래 링크에서 추가적인 논의를 확인해보실 수 있습니다:

이 답변이 문제 해결에 도움이 되었기를 바랍니다. 질문자님의 더 나은 이해를 위해 기존 답변을 참고하여 링크를 추천해드리고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

0

32

2

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

0

108

2

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

0

110

2

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

0

98

2

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

0

99

2

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

0

120

2

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

0

102

2

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

0

242

2

PT 문의사항

0

94

1

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

0

145

2

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

0

123

2

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

0

131

2

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

0

184

2

애그리거트의 repository

0

114

2

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

0

224

1

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

0

100

2

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

0

101

2

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

0

125

2

required 포트에 관해서

0

86

2

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

0

160

2

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

0

92

2

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

0

90

2

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

0

75

2

Member와 MemberDetail 엔티티를 나누는 기준에 대해

0

79

2