매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

동시성 제어 2

JPA 비관적 락

비관적 락(Pessimistic Locking) 이란 동시성 제어 기법중 비관적 락은 트랜잭션이 데이터에 대한 엑세스를 시도할 때 미리 해당 데이터를 잠궈서 충돌을 해결하는 방식. 트랜잭션이 데이터를 읽거나 수정하기 전에 해당 데이터를 잠금(락)을 획득하여 다른 트랜잭션의 엑세스를 막음. 데이터베이스에서는 주로 SELECT ... FOR UPDATE와 같은 명령어를 사용하여 비관적 락을 구현. 비관적 락은 데이터를 수정하는 작업이 많거나 동시에 여러 트랜잭션이 데이터를 수정하는 환경에서 사용. JPA 비관적 락 활용 JPA가 제공하는 비관적 락은 데이터베이스 트랜잭션 락 메커니즘에 의존하는 방법이다. 주로 SQL 쿼리에 select for update 구문을 사용하면서 시작하고 버전 정보는 사용하지 않는..

Spring/JPA 2023.12.08

JPA 낙관적 락

낙관적 락(Optimistic Locking)이란 동시성 제어 기법 중 낙관적 락은 트랜잭션 충돌을 기대하지 않고, 일단 트랜잭션을 수행하고 나중에 충돌을 해결하는 방식. 트랜잭션이 데이터를 읽을 때는 어떠한 락도 획득하지 않고, 수정이 필요한 경우에만 해당 데이터의 버전을 확인하여 충돌 여부를 판단 데이터를 수정하기 전에 해당 데이터의 버전을 확인하고, 만약 다른 트랜잭션에 의해 이미 변경되었다면 충돌이 발생한 것으로 간주하여 롤백하거나 충돌을 해결하는 방법을 적용 일반적으로 낙관적 락은 읽기 작업이 많고 충돌이 드물거나 극히 적은 경우에 사용. 낙관적 락은 데이터베이스가 제공하는 락 기능을 사용하는 것이 아니라, JPA가 제공하는 버전 관리 기능을 사용 JPA 낙관적 락 활용 JPA(Java Pers..

Spring/JPA 2023.12.07