문제 상황 동아리 면접 중, 동시성 문제와 관련해서 내 로직에서는 연관 엔티티의 아이디가 중복 생성 가능해보인다. 어떻게 하면 중복 생성을 막을 수 있을까? 라는 질문을 받았다. 정확히는 모르겠지만, 낙관적 락을 사용하면 해결할 수 있을거 같다 답했다. 면접관은 낙관적 락을 사용해서도 해결할 수 있지만, UNIQUE 제약조건을 통해서도 해결할 수 있다고 했다. 그래서 UNIQUE 제약조건을 통해 직접 중복 생성을 막아보려 한다! 낙관적 락은 좀 더 공부한 뒤 추후 포스팅해 볼 예정이다. 문제 상황 재현 예를 들면, 아래와 같은 상황이다. userId와 articleId를 갖고 있는 Like 엔티티가 존재한다고 하자. @Entity @NoArgsConstructor @Table(name = "likes")..
UNIQUE 제약 조건이란? 대상의 컬럼에 중복된 값이 저장될 수 없게 하는 제약조건 컬럼 옆 unique 키워드를 붙인 것과, 여러 컬럼 조합에 UNIQUE 제약 조건을 설정하는 것의 차이를 알아보자. 1. 컬럼 옆 unique 키워드로 제약조건 설정 create table user( age int, name varchar(255) unique ); name 필드에 중복된 값을 insert 해보자. 그러면 아래와 같은 오류가 발생한다. insert into user(age, name) values(1, 'sky'); insert into user(age, name) values(2, 'sky'); 즉, unique 키워드가 붙은 각 컬럼은 중복된 값을 저장할 수 없다. 2. CONSTRAINTS로 여러..