Имеет ли смысл использовать ORM в разработке Android?

27

Имеет ли смысл использовать ORM в разработке для Android или оптимизирована среда для более тесной связи между пользовательским интерфейсом и уровнем БД?


Фон : я только начал с разработки для Android, и мой первый инстинкт (исходящий из .net фона) заключался в поиске небольшого объектно-реляционного картографа и других инструментов, которые помогают уменьшить сгущение шаблона (например, POJOs + OrmLite + Lombok ).

Тем не менее, при разработке моего первого приложения игрушки я наткнулся на класс UI , который явно требует курсора базы данных: AlphabetIndexer. Это заставило меня задуматься, может быть, библиотека Android не подходит для строгого разделения UI и слоя БД, и что я упущу множество полезных, экономящих время функций, если я попытаюсь использовать POJO везде (вместо прямого доступа к базе данных) ).


Пояснение : я хорошо осведомлен о преимуществах использования ORM в целом , меня особенно интересует, насколько хорошо библиотека классов Android играет вместе с ней.

Heinzi
источник

Ответы:

20

Android не играет так хорошо, как мог бы. Его рекомендуемый стиль разработки предполагает, что вы строите все из его API, без других библиотек. Уровень пользовательского интерфейса очень тесно связан с моделью. Этот стиль идеально подходит для написания небольших модульных приложений, а не для сложных приложений.

Вам нужно подумать, захотите ли вы какой-либо функциональности Android; если вам это не нужно, то вам нечего терять с помощью ORM. Если это не так, возможно, вам придется согласиться на гибрид. Используйте ORM для всего, что вы можете, но зацепите себя за Cursors и любые другие низкоуровневые объекты, которые вам нужны. Если для выбранной вами ORM требуются DAO (я не знаком с упомянутой вами), то этот слой, вероятно, является лучшим местом для них.

В качестве альтернативы вам может вообще не понадобиться внешний ORM. Если ваши потребности просты, вы можете написать простой слой доступа к данным, который отвечает им. Требования к базе данных большинства приложений не велики. Если у вас есть только несколько таблиц, просто напишите пару классов доступа и объекты модели и назовите это хорошо.

YAGNI и KISS - вот ключевые слова успеха здесь. Я предлагаю вам потратить несколько дней на создание прототипа. Не бойтесь выбрасывать простые тестовые приложения. Попробуйте все свои идеи в одиночку, а затем решите, будут ли какие-либо из них работать для вашего проекта.

Майкл К
источник
6

Это зависит от того, что вы делаете с вашей моделью данных. Если у вас есть код, который манипулирует объектно-ориентированной моделью, и если вы хотите сохранить эти объекты в базе данных sqlite, вам нужен orm.

Если вы пишете новый код Android с нуля, я бы избегал модели данных в памяти, если только приложение не выполняет действительно сложные манипуляции с ОО, как, например, программа САПР. Но для большинства программ сохраните модель данных в базе данных, и пусть цепочка объектов Cursor, Adapter и View сделает для вас много работы.

Зигурд
источник