Hibernate + OSIV.2 транзакции.Повторяемое чтение - PullRequest
0 голосов
/ 13 марта 2012

В этой статье говорится, что если мы используем 2 транзакции, одну для получения первых данных и послесловий, чтобы получить ленивые поля, у нас не возникнет никаких проблем, так как сеанс используется повторно, а сам сеанс гарантирует повторяемостьчитать.Но это кажется невозможным, поскольку сессия удовлетворяет требованиям повторяемого чтения, только когда речь идет о данных, которые уже находятся в кеше.Но что, если объект вместе с его ленивым OTO был удален?Я понимаю, что для коллекции это может не вызвать проблем, она просто вернет пустую коллекцию.Но OTO ... getChildField() вернет прокси (так как OTO настроен на restricted=true), но этого делать не следует, так как все уже пусто.У кого-нибудь есть ответ?

1 Ответ

1 голос
/ 13 марта 2012

В статье говорится, что вы говорите: загрузка объектов по требованию через несколько транзакций не является надежной:

Решением этой проблемы, конечно же, является правильное разграничение и проектирование единицы работы,поддерживается, возможно, техникой перехвата, как показано здесь, и / или правильной техникой выборки, так что вся необходимая информация для конкретной единицы работы может быть получена с минимальным воздействием, наилучшей производительностью и масштабируемостью.

...