인프런 커뮤니티 질문&답변

임주혁님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 서비스 개발

validateDuplicateMember 메서드에서 Unique제약 조건 관련 질문 있습니다.

작성

·

220

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여러 was가 띄워있는 웹에서 0.0000...01초까지 동일한 시간에 join()메서드가 동시에 호출되어 validateDuplicateMember()메서드 또한 동시에 호출되고 findByName()을 통한 조회가 동시에 호출될 경우에 두 클라이언트에 대한 요청에 대해서 모두 isEmpty가 true가 되어 검증 로직을 통과하게 되어 최후의 수단으로 DB단에서 name 필드를 Unique 제약조건을 두어 유일성을 가지게 하는 것은 이해하였습니다.

그렇다면, Unique제약조건까지 설정한 이후에 두 클라이언트가 동시에 요청을 했을 때,
1. 둘 다 DB에 insertion 되지 못하고 에러가 나나요?
2. 둘 중 하나가 삽입이 되고 나머지 하나는 삽입 되지 못하나요? 그렇다면, 어떤 기준으로 둘 중 하나가 선택되나요?

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 임주혁님

DB에 먼저 접근한 쪽은 데이터를 입력할 수 있고, DB에 나중에 접근한 쪽은 데이터를 입력할 수 없습니다. 예외가 발생합니다.

감사합니다.