Я использую Hibernate только с кешем L1 (Session). Мне было интересно, можно ли его предварительно заполнить.Предварительно заполненный кэш Hibernate L1
Предположим, у меня есть Item
таблицу, в которой каждый элемент имеет свой собственный id
, и мне нужно выдавать запросы, как «from Item where id = :id
»: если бы я мог предварительно загружать все детали на один раз я мог бы быстрее время отклика (I» m, используя Hibernate из сервлета под Tomcat).
Кэш сеанса - это очень недолговечный кеш, чье жизненное время, как правило, является временем жизни одной транзакции: несколько миллисекунд и не разделяется между несколькими параллельными потоками. Если вам нужно получить почти все свои элементы по ID в транзакции, то да, вы можете предварительно загрузить все элементы. В противном случае я не вижу смысла. –
Чтение этой статьи (https://community.jboss.org/wiki/UsingHibernateWithTomcat), я понял, что нужно оставить сеанс открытым для всего жизненного цикла сервлета, который может длиться намного больше, чем несколько секунд ... – cdarwin
Я не могу получить доступ к этой статье, но вот что говорит официальная документация спящего режима о сеансе: * Однопоточный, короткоживущий объект, представляющий собой разговор между приложением и постоянным хранилищем. Обертывает JDBC java.sql.Connection. * –