Транзакция в Hibernate

Рейтинг: 0Ответов: 1Опубликовано: 05.11.2014

Добрый день! Надо ли начинать транзакцию при поиске сущности в базе данных (get(...), load(...))? По сути транзакция не будет иметь здесь смысла. Так?

Ответы

▲ 4Принят

Если запрос к БД это фактически только SQL select, то оборачивание запроса транзакциями лишено смысла, с одним небольшим уточнением:

Если перед запросом вы не пытаетесь изменить уровень изоляции транзакций. По умолчанию уровень изоляции транзакций обычно установлен в READ_COMITTED, то есть будут видимы записи, по которым уже прошел коммит.

В некоторых случаях для ускорения запросов можно пробовать установить уровень изоляции транзакций READ_UNCOMITTED (чтение незавершенных транзакций) или наоборот ужесточить требование к изоляции установкой READ_SERIALIZABLE (чтение только сохраненных транзакций).

Так вот в этом случае нужно оборачивать `select' транзакциями. Во всех остальных случаях это не имеет смысла.