Spring, JPA, MySQL 동시성 문제 해결하기 - 카운터 값 업데이트 시 발생하는 문제

March 14, 2024

저번 글에서 살펴본 건 데드락 문제였다. 락에 대한 더 자세한 내용은 저번 글을 한 번 읽고 오면 좋다. 이번에 찾은 문제는 race condition 문제이다. 프로젝트에 횟수를 세는 속성이 많다. 먼저 프로젝트를 간단히 설명하자면 작성자는 게시글로 을 만들고 투표할 수 있는 두 가지 선택지를 만든다. 그리고 다른 사용자들은 토픽에 투표, 댓글을 달 수…


JPA - Hibernate는 일대일 매핑(@OneToOne)에 unique constraint를 자동으로 생성해주나요?

March 01, 2024

최근 프로젝트 코드를 작성하면서, 일대일 단방향 매핑을 할 필요가 있었다. 아직 개발 단계라 Hibernate가 만들어주는 DDL을 사용하고 있었는데, 사용 시 외래키 제약사항을 자동으로 걸어주는걸 확인할 수 있었다. 예를 들어 아래처럼 과 엔티티가 일대일 관계로 있다고 해보자. 외래키 가 테이블에 포함될 것이다. 그리고 생성되는 DDL을 보면 …


Hibernate는 @Column과 @Size 사용 시 길이를 어떻게 판단할까 / 주의할 점

February 28, 2024

과 에 대한 걸 살펴보기 전에 먼저 배경 지식을 잠깐 알아보자. JPA에 관한 책에서 엔티티의 NOT NULL 컬럼을 구현하는 세 가지 방법으로, 어노테이션 어노테이션 어노테이션 위 방법들을 소개하면서 을 권장했다. 그 이유는 무엇일까? - Java(Jakarta) Bean Validation 우선 은 JPA 명세에 포함된 어노테이션은 아니고, J…