Как реализовать кеширование объектов с использованием ORMLite - PullRequest
2 голосов
/ 16 июня 2011

Я использую ORMLite и хотел узнать, есть ли способ реализовать кеш, чтобы предотвратить многократные запросы для одного и того же объекта. Например, когда он аннотирован как «foreign = true» и «foreignAutoRefresh = true»

Вопрос не в том, «как создать кеш», а в том, «как заставить ORMLite найти объект, скажем, в WeakHashMap, и запросить его в БД, если он там не найден» *

Ответы [ 2 ]

3 голосов
/ 07 сентября 2011

Просто к сведению, но мы добавили кеш объекта в ORMLite native в версии 4.26. Он поддерживает кэши WeakReference и SoftReference по умолчанию и может включать в себя простой кэш LRU.

Однако кеш довольно "облегченный", что соответствует названию ORMLite. @Manmal определенно прав, когда упоминает об ограничениях кеша Hibernate и о том, как он может обмануть вас, если вы не будете осторожны.

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

3 голосов
/ 20 июня 2011

Я уже некоторое время пользуюсь ORMLite для Android, и я бы посоветовал вам не использовать такой кеш, если не встроенный.Даже кеш Hibernate иногда подшучивает над тобой, и они буквально вкладывают в него годы усилий.Я бы предпочел встроить мини-кеш в DAO или что-то в этом роде (например, как описано здесь ), что в любом случае дает вам больший контроль (у меня работает довольно хорошо).Кстати, главный разработчик ORMLite даже считает удалить «foreignAutoRefresh» из-за проблем с обновлением.

...