Transaction2 [DB & 팀프로젝트] 삽입 작업에서는 어떻게 동시성 제어를 할까? 들어가며이전 글(https://kongdevlog.tistory.com/19)에서는 행 단위 잠금만으로 모든 동시성 문제를 해결할 수 있을 것 같다고 생각을 하였습니다. 하지만 이번 기능을 구현하며, 잘못된 생각이었다는 것을 깨닫게 되었습니다. 문제 상황사용자 A가 다른 사용자 B에게 매칭을 요청하는 기능을 맡아 구현하게 되었습니다. 따라서 저는 아래와 같은 플로우로 코드를 구현하게 되었습니다. 1. A.id 와 B.id 둘 사이의 진행중인 매칭이 존재하는지 확인. 2 - 1. 매칭이 존재한다면 예외를 반환 2 - 2. 매칭이 존재하지 않다면, 매칭 생성. 이 과정을 단순히 하나의 트랜잭션으로 구현하였습니다.@Transactionalpublic void request(Long requesterId, Lo.. 2025. 2. 18. [팀 프로젝트] 트랜잭션의 커밋 시점과 동시성 관리 상황@Transactional public MemberLoginServiceDto login(String phoneNumber) { Member member = createOrFindMemberByPhoneNumber(phoneNumber); if (member.isBanned()) { throw new BannedMemberException(); } ... return new MemberLoginServiceDto(accessToken, refreshToken, member.isProfileSettingNeeded()); } private Member createOrFindMemberByPhoneNumbe.. 2025. 1. 28. 이전 1 다음