Read uncommited
Read commited → 보통 많이 쓰는 수준
Repeatable read
serializable
select for update
@Entity
public class Board {
@Id
private String id;
private String title;
@Version
private Integer version;
}
JPA를 사용할때 추천하는 전략은 READ COMMITED + 낙관적 버전 관리
JPA가 제공하는 낙관적 락은 버전(@Version)을 사용한다. 따라서 낙관적 락을 사용하려면 버전이 있어야 한다. 낙관적 락은 트랜잭션을 커밋하는 시점에 충돌을 알 수 있다는 특징이 있다.
NONE
OPTIMISTIC
OPTIMISTIC_FORCE_INCREASE
OPTIMISTIC_FORCE_INCREMENT는 Aggregate Root(martinfowler.com/bliki/DDD_ Aggregate.html)에 사용할 수 있다. 예를 들어 Aggregate Root는 수정하지 않았지만 Aggregate Root가 관리하는 엔티티를 수정했을 때 Aggregate Root의 버전을 강제로 증가시킬 수 있다.