https://docs.oracle.com/javaee/7/api/javax/persistence/LockModeType.html
If transaction T1 calls for a lock of type LockModeType.OPTIMISTIC on a
versioned object, the entity manager must ensure that neither of the
following phenomena can occur:
P1 (Dirty read): Transaction T1 modifies a row. Another transaction T2 then
reads that row and obtains the modified value, before T1 has committed or
rolled back. Transaction T2 eventually commits successfully; it does not
matter whether T1 commits or rolls back and whether it does so before or
after T2 commits.
P2 (Non-repeatable read): Transaction T1 reads a row. Another transaction T2
then modifies or deletes that row, before T1 has committed. Both transactions
eventually commit successfully.
Lock modes must always prevent the phenomena P1 and P2.
Грязное чтение и неповторяющееся чтение: предотвращается уровнем изоляции транзакций или оптимизмом c блокировка?
Как может ли оптимистическая блокировка c предотвратить P1 и P2 без помощи блокировки базы данных?