2012-02-10 2 views
1

ПОЧЕМУ JPA требует, чтобы транзакция/сессия была открыта для запросов типа запроса, таких как загрузка ленивых свойств? Могут ли они не загружаться за пределы транзакции? Я прекрасно понимаю, почему это требуется для обновления или вставки, но похоже на ненужное ограничение для выбора (плюс много страдания для новичков от ленивой загрузки).Почему JPA требует транзакции для загрузки объектов

ответ

0

JPA не требует транзакции, но EntityManager (Спящий режим: Session). Вот почему обходное решение может быть выполнено OpenEntityManagerInView (или OpenSessionInView), а не OpenTransactionInView.

Что заставляет вас думать, что вам нужна сделка? См. here для простого примера кода без транзакций.

+0

OpenEntityManagerInView запускает вторую транзакцию для загрузки ленивых свойств. Это обходной путь, и, на мой взгляд, не отличный дизайн для обработки ленивых грузов. – Mouscellaneous

Смежные вопросы