Isolation levels are defined as an ANSI standard. How a particular vendor enforces the isolation level may vary from platform to platform, AFAIK.
For example, in Oracle reads do not block writes to the same record, and vice versa. Only if you try to update a record that has been modified by another uncommitted transaction will your transaction block.
Hibernate does not do any locking itself--it delegates all of this to the underlying RDBMS platform. See the documentation for your platform to learn more how it handles locking.
This looks like a pretty good overview of isolation levels:
http://www.orafaq.com/articles/archives/000044.htm