Лучшие практики для БД SQLite и ContentProvider - PullRequest
46 голосов
/ 13 ноября 2009

Мое приложение для Android читает и записывает данные в локальную базу данных SQLite из нескольких различных видов деятельности и службы. Довольно стандартный. Но я не доволен тем, что все данные БД хранятся в виде констант, которые я затем использую везде, где у меня есть доступ к БД. Мне посоветовали обернуть БД в ContentProvider. Звучит неплохо. Пока я рефакторинг своего кода, я решил спросить:

  • Каковы ваши лучшие практики для хранения локальных данных в Android?
  • Где и как вы храните операторы "CREATE TABLE", имена столбцов, другие SQL?
  • Не могли бы вы поделиться списком классов, которые вы создаете, и что входит в каждый из них (ContentProvider, DatabaseProvider, DatabaseHelper ...)?
  • Как согласовать структуру вашей локальной БД Android с БД на стороне сервера, доступной через интерфейс REST?

Да, я понимаю, что я нахожусь в многолетнем опыте "где находится структура сопоставления объектных отношений Android?" вопрос. Сейчас мне в основном любопытно услышать, как вы структурируете свои приложения для Android с помощью того, что доступно в стандартном SDK.

Как всегда, спасибо за указатели!

Ответы [ 5 ]

17 голосов
/ 29 сентября 2010

Мы уже некоторое время настраиваем ORMLite на Android, и он работает хорошо. ORMLite поддерживает Android с родными вызовами базы данных, а также поддерживает другие базы данных через JDBC. Вы аннотируете свои классы / поля и используете базовые классы DAO для сохранения в SQLite.

  • Операторы CREATE TABLE обрабатываются служебными классами моего ORMLite. Классы DAO заботятся о большей части SQL.
  • Раздел Android онлайн-документации объясняет иерархию классов. Вы реализуете DatabaseHelper, который помогает создать обновление вашей базы данных. Ваша деятельность распространяется на OrmLiteBaseActivity (или службу или вкладку), что дает доступ к помощнику и DAO.
  • ORMLite не предоставляет решения для объединения с удаленными REST-серверами.

Надеюсь, это несколько полезно.

1 голос
/ 13 ноября 2009

Сейчас мне в основном интересно услышать, как вы структурируете свои приложения для Android с помощью того, что доступно в стандартном SDK.

Я не большой поклонник SQL и способа его обработки в Android, поэтому я использую объектную базу данных NeoDatis . По сути, он просто позволяет очень легко сохранять / извлекать объекты Java в плоский файл, хранящийся на устройстве. DB40 также является еще одной альтернативной объектной базой данных, которая будет работать на Android.

У этого не было проблем с использованием этого подхода, вы можете заметить, что включение библиотеки NeoDatis увеличит размер вашего APK на ~ 700 КБ.

0 голосов
/ 17 октября 2014

Просто для того, чтобы завершить список все больше и больше ... Другим ORM является решение ORM, предоставляемое с BARACUS Framework . Он не предназначен для создания баз данных корпоративного размера, он больше предназначен для хранения нескольких объектов в базе данных и делает их доступными для приложения. В нем нет подхода генерации кода; вы просто пишете свою сущность pojo, rowmapper и свою таблицу def. Поэтому вы можете использовать DAO, Dependency Injection, поддержку жизненного цикла в стиле IOC и многое другое.

ORM Особенности до сих пор:

Что касается более сложной базы данных (использование ORM немного сложнее, чем в старые добрые весенние времена), я сейчас думаю о добавлении интеграции ormlite.

Для получения дополнительной информации о коде просто посмотрите учебное приложение на github

0 голосов
/ 23 июля 2011

Вы также можете взглянуть на Androrm . Это открытый инструмент orm, разработанный специально для Android. Это должно помочь вам со всем, что связано с базой данных.

0 голосов
/ 13 ноября 2009

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

В связи с этим я работаю над собственной мини-платформой ORM, использую аннотации и управляю всем этим. Пока все работает хорошо, но я еще не все решил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...