| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Отслеживание использования кэша hibernate |
| Автор: Grelloo 27.4.2006, 17:39 |
| Надо определить используется second-level кэш hibernate или нет. Я использую кэш провайдер ehcache для кэширования hibernate. Чтобы определить использовался ли кэш или нет, я могу заглянуть в логи, но мне дали задание наглядно показать, что объект кэшируется посредством second-level cache (для учебных целей). То бишь надо показать, что если используется first-level cache, то объект извлекается каждый раз из базы данных (если это не внутри одной транзакции), а при использовании second-level cache объект первый раз извлекается из базы и кладется в кэш, а при повторном вызове просто берется из кэша, не обращаясь к базе. Как это можно сделать? |
| Автор: tux 28.4.2006, 01:49 |
Загляни в javadoc ehcache - http://ehcache.sourceforge.net/apidocs/index.html. Последовательность действий может быть такой:
|
| Автор: Grelloo 3.5.2006, 14:42 | ||||||||
Написал следующий код:
В логах выбрасывает следующее:
То бишь как я понял example.Honey - это имя кэша, который я использую По поводу ключа получаю следующее
Я вписал его в метод get() В конце концов он пишет
|
| Автор: tux 4.5.2006, 03:01 | ||
| Так ничего не выйдет. Видишь ли, Hibernate в качестве ключей использует не строки, а классы org.hibernate.cache.CacheKey (это можно было узнать, напечатав класс ключа). Следовательно и искать в кэше надо создавая экземпляры этих классов поскольку equals() для разных классов заведомо вернет false. Вот так вот прекрасно работает:
|