powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
4 сообщений из 4, страница 1 из 1
Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
    #37741725
Zealander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрабатываем веб-портал с большой моделью данных с использованием Hibernate.

Столкнулись со следующим вопросом:
Есть некий класс:
public class ClassA{
private Collection collectionB;
private Collection collectionC;

public Collection getCollectionB();

public Collection getCollectionC();
}

Используем кеш объектов, где объекты хранятся длительное время, на протяжении большого количества запросов.

Так вот, на одной странице портала вызывается ClassA.getCollectionB(), на другой - ClassA.getCollectionC().

Как реализовать следующую функциональность: при первом обращении к объекту класса ClassA доставать его из базы вместе либо с коллекцией B либо с коллекцией C (в зависимости от страницы портала) и складывать в кеш объектов. Затем, если в будущем будет обращение к странице, которая потребует вторую, незагруженную ранее коллекцию, загружать вторую коллекцию, и использовать объект из кеша с загруженной коллекцией.

Мысли по этому поводу:
Первое, что приходит в голову, использовать в обеих случаях связи lazy=true. И здесь думаем использовать паттерн Open Session In View, чтобы правильно прогрузились все lazy связи в рамках реквеста. Но как быть в случае дальнейших реквестов к другим страницам портала? Ведь при использовании Open Session In View сессии при последующих реквестах уже не будет.

Подскажите, пожалуйста, как все же разработать нужное нам решение?
...
Рейтинг: 0 / 0
Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
    #37741746
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вам какой-то свой кэш, если проблема решается с помощью кэша второго уровня в Hibernate?
...
Рейтинг: 0 / 0
Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
    #37741749
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zealander,
не понял, в чём проблема.
Сессии короткие - одна за реквест-запрос. Всё равно кто там её запрашивает.
Запрос первой коллекции загрузит её в кеш. Запрос второй аналогично.
Хибер обеспечивает изоляцию об-тов между N реквестами.
Т.е. считай что они выстроились в очередь.
авторлибо с коллекцией B либо с коллекцией C
запрос на view делай либо В либо С
...
Рейтинг: 0 / 0
Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
    #37753668
Zealander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, дошли руки, все заработало.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: как избежать LazyInitializationException при использовании кеша объектов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]