Мы используем Hibernate 3.5.6 вместе с Hazelcast 3.6.1 как кеш второго уровня. У нас есть следующая проблема. У нас есть объект Hibernate с нелицовой коллекцией. При добавлении элементов в коллекцию в два последовательных сеанса на одном узле вся коллекция всегда перезагружается из базы данных. Я бы ожидал, что кеш второго уровня можно просто обновить, когда элемент добавляется в коллекцию, а не полностью вытесняет его из кеша и каждый раз перезагружает его, чтобы добавить еще одну запись. Является ли это основной проблемой кэша второго уровня Hibernate, или это проблема конфигурации на нашей стороне?Обновление кэша второго уровня вместо недействительного
ответ
Я думаю, что могу ответить на вопрос сам. На самом деле Hibernate будет не обновить коллекцию, но всегда ее аннулировать. Я нашел здесь следующее объяснение: http://planet.jboss.org/post/collection_caching_in_the_hibernate_second_level_cache:
Что такое семантика кэширования? Ну, главное, что коллекции никогда не обновляются в кеше; они только недействительны из кэша и затем потенциально кэшируются позже, как результат чтения другой базы данных. Итак, если приложение с именем Group.addMember(), Hibernate удалит членскую коллекцию этой группы из кеша. Если JBoss Cache - это реализация кэша второго уровня, это удаление будет распространяться вокруг кластера; коллекция будет удалена из кеша на всех узлах кластера.
Если позднее приложение должно получить доступ к элементам из этой группы, произойдет очередное считывание базы данных, и текущий набор первичных ключей для членов будет помещен в кеш.
Кэш-память спящего режима по умолчанию вводится в действие на ПК, поэтому, когда вы выполняете findAll(), он не будет использовать кэш гибернации, когда вы найдете findOne (id).
Если вы хотите кешировать findAll(), я бы использовал аннотации ehcache и @Cache, будьте осторожны с тем, какой ключ он использует для своего кеша. См. http://www.ehcache.org/documentation/2.8/get-started/key-classes-methods.html
проблемы у нас в том, что мы хотим, чтобы добавить элемент коллектор Тион. Hibernate всегда будет загружать всю коллекцию, чтобы добавить к ней элемент. Проблема в том, что если сбор не может быть загружен из кеша 2-го уровня (что я не понимаю в нашем случае), он всегда будет запрашивать базу данных для загрузки всей коллекции. –
@JanSchaefer исправьте, что вам придется играть роль этого кеша. Я счастлив, что оказался ошибочным, но я часто сталкивался с той же проблемой, что и вы. –
- 1. Обновление сущности с использованием кэша второго уровня спящего режима
- 2. Hibernate - Как проверить использование кэша второго уровня?
- 3. Hibernate параметры распределены второго уровня кэша
- 4. Hibernate 3.5.5 Конфигурация второго уровня кэша
- 5. Какое решение для кэша второго уровня Hibernate
- 6. Hibernate кэша второго уровня - результат печати
- 7. Почему моя реализация кэша второго уровня запущена?
- 8. Включение кэша второго уровня на ссылку Eclipse
- 9. Кэш кэша Hibernate и кеш второго уровня
- 10. Hibernate кэша второго уровня ленивая коллекция размер
- 11. Hibernate 5 второго кэша уровня и hazelcast
- 12. Infinispan JPA Значения кэша второго уровня
- 13. Nhibernate второго уровня кэша с AliasesToBean трансформатора
- 14. транзакционных второго уровня кэша и Сгенерированный идентификатор
- 15. Сброс кэша второго уровня спящего режима
- 16. Эквивалент элементов кэша второго уровня Syscache/Nhibernate
- 17. Конфигурированный кэш второго уровня и данные не загружаются из кэша второго уровня
- 18. Кэш второго уровня Hibernate?
- 19. MongoDB - Обновление в массиве второго уровня
- 20. Как настроить объект как часть кэша второго уровня в DoctrineORMModule?
- 21. Hazelcast застрял в TIMED_WAITING при использовании кэша второго уровня
- 22. Проблема при отключении второго уровня кэша в спящем режиме
- 23. NHibernate поставщик кэша второго уровня для NHibernate 2.1.1.4000
- 24. кэша второго уровня для субъектов с тем, где положение
- 25. Как получить записи из кэша запросов второго уровня?
- 26. Кэш-память Azure в качестве кэша второго уровня NHibernate?
- 27. Сбой кэша второго уровня Hibernate при выполнении инструкции обновления JPQL
- 28. кэша второго уровня - умное выселение на связанные лицо
- 29. NHibernate кэширование кэша второго уровня с отсутствием конфигурации кэширования
- 30. Включение кэша второго уровня Hibernate с JPA на JBoss 4.2
Это может быть связано с емкостью кеша. Вы проверили это? –
Я изменил конфигурацию соответственно, но это не изменило поведение –