Rapporto tra livelli di isolamento delle transazioni e serrature sul tavolo

Ho letto circa 4 livelli di isolamento:

Isolation Level Dirty Read Nonrepeatable Read Phantom Read READ UNCOMMITTED Permitted Permitted Permitted READ COMMITTED -- Permitted Permitted REPEATABLE READ -- -- Permitted SERIALIZABLE -- -- -- 

Voglio capire il blocco che ogni isolamento delle transazioni assume sul tavolo

 READ UNCOMMITTED - no lock on table READ COMMITTED - lock on committed data REPEATABLE READ - lock on block of sql(which is selected by using select query) SERIALIZABLE - lock on full table(on which Select query is fired) 

di seguito sono i tre fenomeni che possono verificarsi nell’isolamento della transazione
Lettura sporca – nessun blocco
Lettura non ripetibile : nessuna lettura sporca come blocco dei dati impegnati
Phantom Read – blocca il blocco di sql (che viene selezionato utilizzando la query di selezione)

Voglio capire dove definiamo questi livelli di isolamento: solo a livello jdbc / hibernate o anche in DB

PS: Ho seguito i link in Isolation levels in oracle , ma sembrano goffi e parlano su database specifici