본문 바로가기

백엔드 개발일지

(18)
[JPA] JPA 변경 감지를 이용하여 상태 변경을 반영 1. JPA의 변경감지 1) 정의 JPA 에서 변경 감지는 엔티티 객체의 상태를 추적하여, 변경된 Entity 를 데이터베이스에 자동으로 반영하는 메커니즘입니다. 2) 작동 원리 ① JPA 는 EntityManager 를 사용하여 엔티티를 관리한다. EntityManager 는 엔티티를 영속성 컨텍스트에 저장하며, 이후에 엔티티를 조회하거나 수정할 수 있다. ② 이때 영속성 컨텍스트는 EntityManager 가 관리하는 엔티티의 상태를 추적하고, 변경된 엔티티를 데이터베이스에 자동으로 반영하는 기능을 제공한다. EntityManager 에서 영속성 컨텍스트의 flush 메서드를 호출하면, 영속성 컨텍스트에서 변경된 엔티티를 데이터베이스에 반영 ③ 영속성 컨텍스트는 엔티티의 변경을 감지하기 위해 Dirt..
[JPA] save 관련 메서드 동시성 문제 해결 올해 초부터 학교 비교과 프로그램으로 동기들과 함께 진행중인 프로젝트 모카콩(https://github.com/mocacong/Mocacong-Backend)은 동시성 문제를 방지할 코드가 없었습니다. 동시성 문제는 여러 스레드나 프로세스가 동시에 접근하고 수정하는 상황에서 발생할 수 있는 문제입니다. 데이터베이스에서의 동시성 문제는 동시에 여러 개의 트랜잭션이 동일한 데이터를 변경하거나 중복된 데이터를 삽입하려고 할 때 발생할 수 있습니다. 배포하기 전, save 관련 메서드에서 동시성 문제가 발생한다는 것을 발견했고 이를 방지하기 위해 unique 속성을 걸었습니다. 1. unique 속성이란 Spring에서 unique 속성은 데이터베이스 테이블의 컬럼에 대한 고유성(유일성)을 보장하는 데 사용됩니..