https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

Dirty Read

다른 트랜젝션에 의해 수정되었지만, 아직 커밋되지 않은 데이터를 읽는 현상.

변경 후 아직 커밋되지 않은 값을 읽었고 변경을 가한 트랜젝션이 최종적으로 롤백 되었다면, 그 읽은 값은 트랜젝션은 정합성이 깨짐

Non-Repeatable Read

한 트랜젝션 내에서 동일한 쿼리를 수행했는데, 그 사이 다른 트랜젝션에서 값을 수정하는 바람에 두 쿼리의 결과가 다르게 나타나는 현상.

트랜젝션A 에서 특정 행을 읽었고 그 후에 트랜젝션B 에서 동일한 행을 갱신함. 그리고 트랜젝션A 가 다시 동일한 행을 읽었을때 그 두 결과가 다름

Phantom Read

한 트랜젝션 내에서 동일한 쿼리를 수행했는데, 첫번째 쿼리결과에서 없던 행이 두번째 쿼리실행 결과에서 생긴 현상

트랜젝션A가 쿼리를 수행하고 난뒤, 트랜젝션B 에서 새로운 행을 추가하거나 업데이트하고 난뒤, 다시 트랜젝션A가 쿼리를 수행하였을때, 트랜잭션B에서 추가하거나 변경한 내용이 보임 (마치 없던 결과가 생깄다고 하여 Phantom Read)

격리 수준