격리성은 동시에 실행되는 Transaction 이 서로에게 영향을 미치지 않도록 격리합니다.
Ex ) 동시에 같은 데이터를 수정하지 못하도록 하는 것
A 트랜잭션이 한 데이터를 변경 하고 있는 도중에 B 트랜잭션이 데이터를 읽으려하면 A가 변경한 데이터를 읽어온다.
하지만 Dirty Read 라는 문제점이 있다.
이것은 A가 한 데이터를 변경한 후 Rollback 했을때 발생한다.
현업에서는 자주 사용되는 Isolation Level은 아니다.
만약 사용하게 된다면, Service에 @DynamicUpdate 어노테이션을
추가하여 실제로 업데이트된 데이터만 반영되게 할 수 는 있다.하지만 굳이....???
A 트랜잭션이 한 데이터를 변경 하고 있는 도중에 B 트랜잭션이 데이터를 읽으려하면 A가 변경하기 전 데이터를 읽어온다.
만약, A가 데이터 변경후 COMMIT 하게 되면 B는 변경된 데이터를 읽어온다.
항상 일관성 있게 데이터를 읽는다.
다른 TRANSACTION 에서 데이터를 변경하여도 영향을 받지 않는다.
가장 높은 격리 수준...
TRANSACTION 이 완료 될때까지 SELECT 문장을 사용하는 모든 데이터에 Shared Lock 이 걸리므로 다른 User는 그 영역에 해당되는 데이터에 수정 및 입력이 불가하다.