2010-06-04 1 views
25

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

+0

Пожалуйста, ознакомьтесь с ** [JDXA] (http://softwaretree.com/2015/products/jdxa/jdxa.html) **, простой, не -инструсивный и гибкий ORM для Android. JDXA поддерживает отношения наследования, взаимно-однозначные отношения, один-ко-многим и многие-ко-многим. Для отношений «многие ко многим» удаления строк каскадируются до промежуточной таблицы соединений в транзакции, сохраняя целостность другой стороны отношения. См. Различные [Фрагменты кода] (http://softwaretree.com/2015/products/jdxa/code-snippets.html). –

ответ

2

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

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

27

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

http://ormlite.com/sqlite_java_android_orm.shtml

С точки зрения многих-ко-многим, ORMLite не поддерживает каскадирование или любой из более продвинутых функций ORM, но есть примеры легкого МНОГИХ ко-многим реализациях:

http://ormlite.com/docs/examples

+0

Легко настроить, но узнать все имена для вещей, которые не то, что они кажутся очень раздражающими. Он просто не соответствует какой-либо общей терминологии базы данных. Может быть, мне кажется, что это так, потому что я едва ли имею опыт работы с SQLite. Провел три полных дня, просто прочитав документацию о том, как эта головоломка собрана вместе, не могла заставить ее нормально функционировать в конце. Не подходит для SQLite в сочетании с новичками java, на мой взгляд. –

+0

Можете ли вы уточнить проблемы @G_V? Что я могу сделать, чтобы улучшить документацию? Я потратил много времени на это. – Gray

+0

Я могу сказать, и это, скорее всего, из-за моей неопытности с исходными SQLite-андроидными библиотеками, но вы распространили неидеальное именование встроенных библиотек SQLite с помощью таких имен, как OrmLiteSqliteOpenHelper. Такие слова, как «Менеджер» и «Помощник», на самом деле не показывают мне, как начинающему, что происходит. Я на короткое время на этой неделе, но я скоро займусь тем, чтобы действительно документировать, где у меня были проблемы, потому что я думаю, что ваша инфраструктура отличная, но опять же, как кто-то довольно новый для SQLite + Android, я чувствовал, что есть некоторые недостающие шаги в том, как заставить его работать. –

10

Я написал lightw восемь ORM и назвал его Androrm. Поскольку я люблю Django, синтаксис запроса выглядит очень похожим. Пожалуйста, попробуйте и дайте мне обратную связь :)

WEB-страница: http://androrm.com/

Также на GitHub: https://github.com/androrm/androrm

+0

В настоящее время невозможно скачать бинарные релизы. Вы знаете об этом? – wojciii

5

Ниже, как я делаю это с Sorma - An Android Content Provider решение.

  1. Карта вашего 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; 
    ...... 
    
  2. Создание контента класса поставщика:

    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 { 
    } 
    
  3. Определить поставщика контента в AndroidManifest.xml:

    <provider  
    android:authorities="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" 
    android:name="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" /> 
    
  4. Используйте контент-провайдера:

    sorma = SORMA.getInstance(getBaseContext(), AddressBookContentProvider.class); 
    
    // insert contact 
    Contact contact = new Contact(); 
    contact.setFirstName("fname1"); 
    contact.setLastName("lname1"); 
    sorma.insert(contact); 
    

Готово!

(Вы можете найти более подробную информацию here.)

+1

Ссылка на учебник SORMA больше недоступна. – JJD

10

Для тех, кто все еще ищет решение ORM, я выпустил greenDAO несколько месяцев назад. Несколько приложений в Android Market уже используют его. В отличие от других инструментов ORM для Android, одной из целей первичного проектирования greenDAOs была производительность. Для многих операций он должен быть в несколько раз быстрее, чем другие решения, например.он в 4-5 раз быстрее по сравнению с ORMLite для загрузки объектов.

Он поддерживает отношения. Документация описывает how to use relations and how you could model many-to-many relations.

Удалить-каскад является опасной вещью и, следовательно, не поддерживается greenDAO. Более безопасный способ - удалить сущности снизу вверх внутри транзакции.

+0

Я пробовал greendao, концепция замечательная, что вы создаете сущности и dao, но способ, которым вы составляете генератор, не так уж умен. – Andy

+0

О чем вы говорите? –

+0

@greenrobot любые советы о том, как выполнить удаление снизу вверх в случае иерархии (отношения к одному и тому же объекту)? –

3

Я использую, и являюсь автором, Mechanoid DB, который предоставляет sqlite, например dsl, для создания сторонних контент-провайдеров sqlite.

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

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

+0

Хорошая работа !! использовал его вполне доволен! –

+0

Спасибо за ваши комментарии! :) –

+0

Концепция выглядит великолепно, идеи, стоящие за ней, хороши, определенно собираются попробовать. –

Смежные вопросы