Подтвердить что ты не робот

ORM для Android SQLite и схемы базы данных

Я ищу очень простую структуру ORM, работающую на Android для SQLite. Я тестировал ActiveAndroid, но ни один из примеров не мог построить на Eclipse.
Кстати, как ребята внедряют отношения "многие ко многим" в SQLite для Android? Как вы отражаете каскад относительно удаления строк и гарантируете целостность базы данных?

4b9b3361

Ответ 1

Я являюсь основным автором ORMLite, у которого есть бэкэнд Android, который вызывает звонки в собственные API баз данных ОС Android для поддержки своего ORM функциональность. У нас есть большое количество разработчиков Android, которые успешно используют фреймворк. См. Здесь дополнительную информацию:

http://ormlite.com/sqlite_java_android_orm.shtml

В терминах отношений "многие ко многим" ORMLite не поддерживает каскадные или любые более продвинутые функции ORM, но есть примеры простых реализаций "много-ко-многим":

http://ormlite.com/docs/examples

Ответ 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.

Проверьте это:

http://www.robotoworks.com/mechanoid-plugin/mechanoid-db/

Ответ 6

Попробуйте SQLiteGen. Это не так богато, как спящий режим, но вы можете сгенерировать в Eclipse несколько простых классов ORM.

Надеюсь, что это поможет!