Сессия гибернации в разговоре с Seam становится слишком большой - PullRequest
2 голосов
/ 21 сентября 2011

Мы используем диалог Seam для мастера, который занимает несколько страниц, некоторые из этих экранов загружают много данных для выбора пользователя (может быть несколько тысяч записей).Сеанс Hibernate держится за все, что является проблемой как для использования памяти, так и для производительности (поскольку очистка занимает несколько секунд).

Это наш единственный вариант удаления данных при загрузке или есть лучший способ управленияэто?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Вам не нужно сохранять все в разговоре.

Просто сохраняйте данные, введенные пользователем, и используйте область событий для запросов, и создавайте запрос каждый раз, когда вы заходите на страницу мастера.

Просто не сохраняйте результатызапроса.

0 голосов
/ 21 сентября 2011

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

Как решить проблему, зависит от множества факторов.

  • Это данные всего приложения, которые можно хранить в одном месте?
  • Можете ли вы кэшировать их либо на уровне Hibernate (как с ehcache), либо в ...
  • ... внешний кеш, который находится между приложением и БД?
  • Нужно ли хранить все данные в этих записях или небольшое подмножество(как идентификатор и метка) достаточно?

И т.д.

...