Я ищу очень простую структуру ORM, работающую на Android для SQLite. Я тестировал ActiveAndroid, но ни один из примеров не мог построить на Eclipse.
Кстати, как ребята внедряют отношения "многие ко многим" в SQLite для Android? Как вы отражаете каскад относительно удаления строк и гарантируете целостность базы данных?
ORM для Android SQLite и схемы базы данных
Ответ 1
Я являюсь основным автором ORMLite, у которого есть бэкэнд Android, который вызывает звонки в собственные API баз данных ОС Android для поддержки своего ORM функциональность. У нас есть большое количество разработчиков Android, которые успешно используют фреймворк. См. Здесь дополнительную информацию:
В терминах отношений "многие ко многим" ORMLite не поддерживает каскадные или любые более продвинутые функции ORM, но есть примеры простых реализаций "много-ко-многим":
Ответ 2
Я написал легкий ORM и назвал его Androrm. Поскольку я люблю Django, синтаксис запроса выглядит очень похожим. Пожалуйста, попробуйте и дайте мне отзыв:)
Веб-страница: http://androrm.com/
Также на GitHub: https://github.com/androrm/androrm
Ответ 3
Для тех, кто еще ищет решение ORM, несколько месяцев назад я выпустил greenDAO. Несколько приложений в Android Market уже используют его. В отличие от других инструментов ORM для Android, одной из целей первичного проектирования greenDAOs была производительность. Для многих операций он должен быть в несколько раз быстрее, чем другие решения, например. он в 4-5 раз быстрее по сравнению с ORMLite для загрузки объектов.
Он поддерживает отношения. В документации описывается как использовать отношения и как вы можете моделировать отношения "многие-ко-многим" .
Удалить-каскад является опасной вещью и, следовательно, не поддерживается greenDAO. Более безопасный способ - удалить сущности снизу вверх внутри транзакции.
Ответ 4
Ниже я расскажу, как я это делаю с SORMA - решением для Android Content Provider.
-
Сопоставьте таблицу Java POJO с базой данных:
@Table( name="contact", keyColumn="id", autoId=true, create="create table if not exists contact (" + " id INTEGER primary key autoincrement" + ", firstName text" + ", lastName text" + ", married tinyint" + ")" ) public class Contact { private Integer id; private String firstName; private String lastName; private boolean married; ......
-
Создайте класс поставщика контента:
import com.gaoshin.sorma.annotation.ContentProvider; import com.gaoshin.sorma.annotation.SormaContentProvider; @ContentProvider( version = 1, mappingClasses = { Contact.class, Phone.class } ) public class AddressBookContentProvider extends SormaContentProvider { }
-
Определите поставщика контента в AndroidManifest.xml:
<provider android:authorities="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" android:name="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" />
-
Используйте поставщика контента:
sorma = SORMA.getInstance(getBaseContext(), AddressBookContentProvider.class); // insert contact Contact contact = new Contact(); contact.setFirstName("fname1"); contact.setLastName("lname1"); sorma.insert(contact);
Готово!
(Вы можете найти более подробную информацию здесь.)
Ответ 5
Я использую и являюсь автором, Mechanoid DB, который предоставляет sqlite, например dsl, для создания поддерживаемых контент-провайдеров sqlite.
Проверьте это:
Ответ 6
Попробуйте SQLiteGen. Это не так богато, как спящий режим, но вы можете сгенерировать в Eclipse несколько простых классов ORM.
Надеюсь, что это поможет!