Управление уровнями изоляции транзакций в Hibernate осуществляется следующими способами:
Через файл конфигурации hibernate.cfg.xml или persistence.xml: Уровень изоляции задается глобально для всего SessionFactory с помощью свойства hibernate.connection.isolation:
xml
Значение указывается числовым кодом, соответствующим уровням изоляции JDBC (Connection.TRANSACTION_READ_UNCOMMITTED = 1, TRANSACTION_READ_COMMITTED = 2, TRANSACTION_REPEATABLE_READ = 4, TRANSACTION_SERIALIZABLE = 8).
Программно, при получении соединения: Уровень изоляции можно установить непосредственно на JDBC Connection, полученный из SessionFactory:
java
Этот способ используется реже и может быть полезен для специфических задач.
Через API транзакций Spring (при использовании Spring Framework): В конфигурации транзакций Spring можно указать атрибут isolation. Spring TransactionManager будет управлять уровнем изоляции на основе этой настройки.
java
Spring предпочитает устанавливать уровень изоляции на уровне JDBC Connection, полученного из пула соединений, управляемого Spring. Hibernate будет использовать этот уровень изоляции для сессии, привязанной к текущей транзакции Spring.
Важные моменты:
hibernate.connection.isolation применяется по умолчанию для всех транзакций, созданных этим SessionFactory.