прямой доступ к ehcache и использование hibernate только при отсутствии кеша - PullRequest
2 голосов
/ 03 июля 2010

Env: Seam 2.2.0, JPA, Hibernate 3.3.x, ehcache-core 2.0.1

Вот некоторые наблюдения по использованию кэша вместе с Hibernate.Мы уже используем кэш 2-го уровня, но не совсем довольны временем отклика.

Третий вариант, упомянутый в приведенной выше ссылке (прямой доступ к EHCache, использовать Hibernate только при отсутствии кеша: 20 секунд), говорит оиспользуя ehcache перед постоянным слоем.Мы уже используем платформу Seam EntityQuery для всех наших запросов, возможно ли включить вышеуказанную опцию, когда вы сначала обращаетесь к ehcache перед тем, как запрашивать или загружать объекты.Как в таких случаях обрабатывается изменение или удаление объекта, нужно ли вручную извлекать эти записи из кэша.Может кто-нибудь пролить свет на это?

1 Ответ

2 голосов
/ 03 июля 2010

Прежде всего, я нахожу данные из упомянутой статьи чрезвычайно странными (19-е, чтобы получить соединение, предполагают конфликт в пуле соединений). Поэтому я бы взял его с крошкой соли.

Мы уже используем платформу Seam EntityQuery для всех наших запросов, возможно ли включить вышеуказанную опцию, когда вы сначала обращаетесь к ehcache перед запросом или загрузкой объектов.

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

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

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

Полностью вручную. Удачи в транзакциях, обработке ошибок, параллелизме и т. Д.

...