В каком Android / Java ORM используется «кэширование объектов», как в Hibernate? - PullRequest
1 голос
/ 21 июля 2011

Я видел кучу вопросов об облегченных альтернативах Hibernate, особенно для Android.Но какой из них имеет шаблон «Карта идентичности»?

Этот шаблон гарантирует, что любой объект, представляющий строку в БД, существует только один раз в любом сеансе.- Это помогает моей программе быть последовательной: если я где-то изменяю сопоставленный объект, он изменяется везде (потому что все ссылки указывают на один и тот же объект).Неважно, если я повторно получу объект с помощью нового запроса к базе данных, или все равно получу его от предыдущих вызовов: ORM гарантирует, что все они ведут себя как одно и то же.

Hibernate делает это в«Кэш 1-го уровня».

Ответы [ 3 ]

2 голосов
/ 26 сентября 2011

ORMLite - это пакет Android ORM для Android, который начиная с версии 4.26 (выпущен 26.09.2011) содержит первое представление о внутреннем кеше объектов.ORMLite не имеет шаблона «сеанса», но пользователь может внедрить кэш в любой DAO и может сбросить его, когда пожелает.Вот документы для поддержки кеша.

http://ormlite.com/docs/object-cache

Цитируя это руководство, кеш поддерживает следующие вещи:

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

В базовый пакет ORMLite включены 2 реализации кэша объектов.Один, который поддерживает слабые / мягкие ссылки, и другой, который является стандартным LRU.

Это [очевидно] очень простая реализация по сравнению с кэшем 1 уровня Hibernate.Обратная связь приветствуется.

1 голос
/ 24 октября 2011

greenDAO поддерживает сеансы, аналогичные Hibernate , и поставляется с областью идентификации.Внутри сеанса сущности отслеживаются уровнем ORM.

0 голосов
/ 28 февраля 2015

Я пытаюсь сделать то же самое.Вы слышали о https://github.com/iainconnor/ObjectCache?

Я собираюсь сохранить длину списка и всех элементов по одному.

Вернемся к вам, если бы я покончил с собственной реализацией

Приветствия, Кароли

...