**트랜잭션 대부분 충돌이 발생하지 않는다고 가정
**하고 어플리케이션에 락을 거는 것
읽는 시점에 락을 사용하지 않기 때문에 데이터를 수정하는 시점에 다른 사용자에 의해 변경됐는지 여부 확인 필요
이렇게 낙관적 락은 트랜잭션을 커밋하기 전까지는 트랜잭션의 충돌 여부를 알 수 없다.
JPA가 제공하는 낙관적 락을 사용하려면 **@Version을 사용하여 버전 관리를 추가
**하면 된다.
@Version을 붙이면 엔티티가 수정될 때 자동으로 버전이 하나씩 증가하며 수정할 때 조회 시점과 버전이 다르면
OptimisticLockException
예외가 발생
@Version을 포함하는 모든 엔티티에 대하여 낙관적 락을 얻음
낙관적 락을 사용하면서 버전 정보를 강제로 증가 시킨다
자원에 대한 동시 요청이 발생하여 일관성에 문제가 생길 것이라고 비관적으로 생각하고 우선 락을 거는 것