我正在寻找一个非常简单的ORM框架在Android上为SQLite工作。我一直在测试ActiveAndroid,但没有一个例子可以在Eclipse上构建。
顺便说一下,如何在SQLite for Android中实现“多对多”关系?你如何反映关于删除行的级联并保证数据库的完整性?ORM在Android SQLite和数据库方案
回答
尝试SQLiteGen。它不像hibernate那样功能丰富,但是您可以在Eclipse中使用它生成一些简单的ORM类。
希望有帮助!
我是ORMLite的主要作者,它有一个Android后端,它调用原生Android OS数据库API来支持其ORM功能。我们有大量的Android开发者成功地使用了这个框架。在这里看到更多的信息:
在许多一对多的关系方面,ORMLite不支持级联或任何更高级的ORM功能,但也有容易多对一的例子一对多实现:
易于设置,但学习所有名称的东西,他们似乎不是很烦人。它似乎不符合任何通用数据库术语。也许这只是对我而言,因为我几乎没有使用SQLite的经验。花了整整三天的时间阅读关于如何拼凑这些难题的文档,最终无法让它正常运行。在我看来,不适合与Java初学者结合使用SQLite。 – 2014-12-10 14:53:41
对于@G_V的问题,你能更具体吗?我可以做什么来改进文档?我花了很多时间。 – Gray 2014-12-10 18:08:51
我可以说,这很可能是因为我对原始SQLite android库缺乏经验,但是您已经通过使用名称(如OrmLiteSqliteOpenHelper)传播了内置SQLite库的不理想命名。像经理和助手这样的话并不真正让我看到,作为初学者,发生了什么事情。本周我的时间有点短,但我很快就要花一些时间真正记录我遇到麻烦的地方,因为我认为你的框架非常棒,但是再次,作为SQLite + Android的新手,我觉得那里有在如何让它工作中缺少一些步骤。 – 2014-12-11 08:20:04
我写了一个lightw八个ORM我自己并称它为Androrm。正如我喜欢Django,查询语法看起来很相似。请尝试给我反馈:)
而且在GitHub上:https://github.com/androrm/androrm
目前无法下载二进制版本。你知道吗? – wojciii 2014-06-01 14:06:29
下面是我如何与SORMA做到这一点 - 一个Android内容提供商的解决方案。
地图你的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);
完成!
(你可以找到更多信息here。)
指向SORMA教程的链接不再可用。 – JJD 2013-02-05 18:45:13
对于那些仍然在寻找一个ORM解决方案,我发布greenDAO几个月前。 Android Market中的多个应用程序已经在使用它。与其他Android ORM工具不同,greenDAO的主要设计目标之一是性能。对于许多操作来说,它应该比其他解决方案快多倍,例如,与ORMLite相比,加载实体的速度要快4-5倍。
它支持关系。该文档描述了how to use relations and how you could model many-to-many relations。
删除级联是一件危险的事情,因此greenDAO不支持。更安全的方法是删除事务内部的实体。
我尝试了greendao,这个概念非常棒,你正在生成实体和道,但是你组成发生器的方式并不那么聪明。 – Andy 2013-02-09 00:13:16
你指的是什么? – 2013-02-09 07:42:48
@greenrobot有关如何在层次结构(与同一实体的关系)情况下执行自下而上删除的任何提示? – 2013-02-18 19:17:18
我使用并且是Mechanoid DB的作者,它提供了像dsl一样的sqlite用于生成支持sqlite的内容提供者。
检查出来:
良好的工作!用它很满意! – 2014-05-13 08:41:09
谢谢你的好评! :) – 2014-05-13 10:42:52
这个概念看起来不错,它背后的想法很好,肯定会尝试一下。 – 2014-12-10 15:57:56
- 1. Django模型的sqlite数据库方案
- 2. Android ExpandableListView和SQLite数据库
- 3. Android SQLite数据库和SharedPreferences
- 4. Android的SQLite数据库中的冲突解决方案
- 5. Android SQLite数据库
- 6. Android-SQLite数据库
- 7. Android。 SQLite数据库
- 8. sqlite数据库android
- 9. Android SQLite数据库
- 10. Android sqlite数据库添加方法
- 11. Android的SQLite数据库更新方法
- 12. 在Android库中创建SQLite数据库
- 13. Android SQLITE数据库和微调
- 14. Android和40mb的SQLite数据库充气
- 15. Android AsyncTask和SQLite数据库实例
- 16. android和java中的SQLite数据库
- 17. 的Android QuickAction和SQLite数据库更新
- 18. Android:打开和关闭SQLite数据库
- 19. SQLite数据库和语言
- 20. android - 使用SQLite数据库
- 21. 填充Android SQLite数据库
- 22. Android CustomListview,SQLIte数据库,CustomAdpater
- 23. SQLite数据库位于android
- 24. Android - 打开SQLite数据库
- 25. 插入SQLite数据库android
- 26. 打开Android SQLite数据库
- 27. Android SQLite数据库问题
- 28. android sqlite数据库光标
- 29. RuntimeException与SQLite数据库 - Android
- 30. Android SQLite数据库更新
请看看** [JDXA(http://softwaretree.com/2015/products/jdxa/jdxa.html)**,一个简单的,非侵入式和灵活的ORM for Android。 JDXA支持继承,一对一,一对多和多对多的关系。对于多对多关系,行的删除级联到事务中的中间连接表,维护关系另一方的完整性。看到不同的[代码片段](http://softwaretree.com/2015/products/jdxa/code-snippets.html)。 – 2015-09-30 02:17:18