Избегайте 1 уровня уровня кэша при использовании @persistenceContext (type = persistenceContexttype.extended)

StackOverflow https://stackoverflow.com/questions/4029239

Вопрос

Я только что настроил @persistenceContext (type = persistenceCtexttype.extedence) на моих классах DAO, чтобы получить ленивую загрузку, работающую на уровне просмотра (необходимо, чтобы получить не закрывать сеанс для этого), но у меня проблемы с 1 уровнем (я представляю) .. потому что объект кэшируется даже с настроек кэша второго уровня. После выключения «Type = PersiStenceCtextType.extededed» я получил систему, не кэширующую объект, но погрузился в ленивые проблемы погрузки снова.

//@PersistenceContext (type=persistenceCtexttype.exted)
@PersistenceContext Private Entitymanager Entitymanager;

Есть ли способ контролировать это? Мне действительно нужна ленивая загрузка, но не хочу, чтобы мой объект хранится на 1 кэш-памяти на 1 уровне каждый раз.

спасибо

Это было полезно?

Решение

Если вы действительно не хотите использовать расширенный контекст настойчивости и действительно понять, что значит (я не хочу быть педантичным, но это важно, так как расширенный менеджер сущности имеет разные резьбу, жизненный цикл и семантику управления памятью), мое предложение будет использовать обычный Оив (открытый Entitymanager в поле зрения) решить вашу проблему ленивого загрузки.

Весна обеспечивает две реализации этого шаблона с фильтром (OpenEntityManagerInViewFilter) и перехватчик (OpenEntityManagerInViewInterceptor). От Javadoc:

Предназначен для картины «Открытый Entitymanager в виду», то есть, чтобы обеспечить ленивую загрузку в веб-представлениях, несмотря на исходные транзакции, уже завершенные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top