트랜잭션이 충돌하지 않는다고 가정하고 데이터를 수정하는 시점에 충돌을 감지하여 처리하는 방법이다.
각각의 트랜잭션에 대해 버전 정보를 사용하여 충돌을 감지하는데
트랜잭션이 데이터를 읽을 때 버전 정보를 함께 가져오고, 수정 시에는 해당 버전 정보를 확인하여 충돌이 발생한 경우 롤백 또는 재시도 등의 처리를 수행한다.
데이터 충돌이 적은 경우에 유리하며, 동시성이 높아질 수 있다.
(MVCC의 일종)
트랜잭션이 충돌한다고 가정하고 데이터베이스의 특정 레코드나 테이블에 락을 걸어
다른 트랜잭션이 해당 데이터를 읽거나 수정하지 못하도록 한다.
이를 통해 데이터의 일관성을 유지하고 데이터 충돌을 방지할 수 있지만
락이 오래 지속될 경우 다른 트랜잭션들의 성능에 영향을 줄 수 있으며, 동시성이 낮아질 수도 있다
In JPA
Optimistic Locking
Pessimistic Locking
각각의 LockModType : https://jaehoney.tistory.com/159
Isolation Level 과의 관계