Hibernate кеширование

Уже в спящем режиме кэш первого уровня доступен для кеширования, тогда почему мы должны использовать кэш второго уровня? Вместо второго уровня, почему мы не можем использовать только кэш первого уровня в спящем режиме для кеширования?

3 ответа

См. Что такое кэширование первого и второго уровня в Hibernate? хорошие описания кеширования Hibernate.

В принципе:

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

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

Кэш второго уровня в спящем режиме является необязательным, и к нему всегда обращаются, прежде чем предпринимать какие-либо попытки найти объект в кэше второго уровня.

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

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

Кэш второго уровня работает на уровне SessionFactory, поэтому все изменения, внесенные в постоянный объект, будут отслеживаться, даже если текущий сеанс закрыт. Вы должны вручную включить его. Есть несколько поставщиков, которые предоставляют эту функциональность, некоторые из них - ehCache, SwarmCache, OScache и т. Д.

Другие вопросы по тегам