是否有任何好的数据库抽象层/对象关系映射器/ ActiveRecord实现/它们为Android调用的是什么?我知道db4o是官方支持的,但它的占用空间很大,我宁愿使用更传统的数据库(SQLite
)。
答案 0 :(得分:17)
我是ORMLite的主要作者,它被设计为小[ish]但仍然提供更高级别的功能。 ORMLite调用本机Android OS数据库API以支持其ORM功能。有关一般信息,请参阅以下内容
以下是一些Android示例应用程序:
答案 1 :(得分:12)
我尝试了Sugar ORM,这是非常基本的(并且易于使用),但它可以满足我的需求。
答案 2 :(得分:5)
试试ActiveAndroid。它是免费和开源的( Apache Version 2.0 )。
来自网站:
ActiveAndroid是一种活动的记录样式ORM(对象关系 映射器)。 [...] ActiveAndroid允许你 无需编写即可保存和检索SQLite数据库记录 单个SQL语句。每个数据库记录都整齐地包装成一个 使用save()和delete()等方法的类。
[...]至少可以说,在Android中访问数据库是一件麻烦事。 ActiveAndroid负责所有设置和杂乱的事情,以及所有 只需几个简单的配置步骤。
答案 3 :(得分:5)
有一个'android-active-record'项目,它提供ActiveRecord抽象来访问Android SQLite数据库。 它可以在这里找到:http://code.google.com/p/android-active-record
它允许在对数据库实体执行CRUD操作时消除大部分样板编码,并最大限度地减少创建/维护数据库结构的工作
答案 4 :(得分:2)
如果性能和大小很重要,您应该查看我们的开源ORM工具greenDAO。我们写它是因为我们不想在速度上妥协。其他工具严重依赖于反射,这在Android上非常慢。尽管尺寸很小(<100k),但它支持关系,查询构建器等。
答案 5 :(得分:2)
无耻的插件,但我一直在开发一个名为Infinitum的新开源Android框架。它的一个主要特性是ORM,它具有类似于Hibernate的标准API和一些其他漂亮的功能(关联,延迟加载等)。它还处于早期阶段,但我认为它的发展非常好。
答案 6 :(得分:2)
我为Android编写了一个新的ORM,它的目标是尽可能简单地实现。它支持列表和SQL自由迁移,我总是发现在其他库中有一些开销。
答案 7 :(得分:1)
还有Neodatis和Perst(Lite)
一年前我和佩尔特一起玩过玩具并认为这不值得
毕竟,a)Android在相当受限制的设备上运行,每个应用程序的堆空间大约为16mb; b)您的客户会非常欣赏性能和低功耗。
所以我的建议是使用SQLite和手写SQL。它并不难,Android SDK提供的包装器非常好。
编辑:2012年的建议是使用DroidParts的ORM组件(这是我的项目)。
答案 8 :(得分:1)
我遇到了同样的问题,并查看了android-active-record和ActiveAndroid。我发现android-active-record没有处理我关心的事情(例如关系),而且ActiveAndroid不是免费的。因此,我决定编写自己的库。它被称为AndroidRecord,它是hosted on GitHub,您可以随意使用它(我想我将使用MIT许可证)。我每天都使用它,我很满意,但我很乐意得到反馈。
如果您需要知道如何使用它,我正在处理文档。如果你马上需要它,你可以查看this lame example project这应该足以让你的脚趾浸入。你也可以给我发电子邮件。
答案 9 :(得分:0)
看看Androrm。它是开源的并且有很好的文档记录(see here)。如果您使用过django,您会注意到,语法非常相似。
Androrm还支持最常见字段类型的抽象类,以及关系字段。通过这种方式,您可以轻松地查询数据,只需付出很少的努力即可。
答案 10 :(得分:0)
我前段时间比较了ormlite和greendao的基础知识。您可能想看看there。我计划在不久的将来写一些跟进更高级的东西,但现在它只是一个基本的东西。在我自己的项目中,我使用的是GreenDAO。
答案 11 :(得分:-4)
SQLite明确是Android的一部分:
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
但是,您可能必须创建自己的抽象层(用于简单查询的查询构建器),或者以其他方式处理SQL。
也许你需要http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html?