Похоже, что существуют разные мнения об использовании транзакций для чтения из базы данных.
Цитата из статьи developerWorks Стратегии транзакций: Обзор моделей и стратегий:
Зачем вам нужна транзакция, если вы только читаете данные? Ответ что вы этого не делаете. Запуск транзакции для выполнения только для чтения операция добавляет к накладным расходам обрабатывать поток и может читать блокировки в базе данных (в зависимости от о том, какой тип базы данных вы используете и какой уровень изоляции установлен к).
В качестве противоположного мнения есть следующая цитата из документации Hibernate Доступ к транзакционным данным и режим автоматической фиксации
Наша рекомендация - не использовать режим автосохранения в приложении и применять только транзакции только для чтения когда есть очевидная производительность выгоды или когда будущие изменения кода крайне маловероятны. Всегда предпочитайте регулярные транзакции ACID для группировки ваши операции доступа к данным, независимо от того, будете ли вы читать или записывать данные.
Существует также аналогичная дискуссия по списку рассылки EclipseLink здесь.
Так где же правда? Являются ли транзакции для чтения лучшей практики или нет? Если оба являются жизнеспособными решениями, каковы критерии для использования транзакций?
Насколько я вижу, это имеет значение только в том случае, если уровень изоляции выше, чем "read commit". Правильно ли это?
Каковы опыт и рекомендации?