Android开发有什么好的ORM工具吗?

任何在Android(“gPhone”)工作的人都有或知道一个地方,我可以找到一个好的ORM工具?代码是用Java编写的,数据库是SQLite。我想找到的是一个工具,给定对象定义,可以自动生成表和CRUD函数(这将是非常棒的),或者,一个工具,可以接受表定义,对象定义,并自动生成CRUD功能。问题是,所有这些都必须在Android框架内进行,而Android框架对于数据库访问的工作方式有自己的约定。

78924 次浏览

Aptana中的ActiveRecordJS是一个可以在gPhone上运行的Javascript ORM。它被设计用于Jaxer和Gears。当您使用Jaxer适配器时,您可以连接到SQLLite。

更新:我不认为我说清楚了,但ActiveRecordJS是一个运行客户端的ORM,这可能是你在gPhone上的一个优势。

我不知道你到底想要什么,但是如果你的体系结构需求是灵活的,有一个替代SQLite的选择,你可能会发现它很有用。db4o可能值得一查:

我已经为Android开发了我自己的JPA ORM实现。它还没有完全完成功能,但是您可以使用@Entity、@Id、@Column注释注释类,并且您可以获得可以从SQLite数据库存储和检索的JPA实体。它需要更多的功能。但如果有足够的兴趣,它可能会加速我的努力。

ActiveAndroid (20美元)看起来可能正是你需要的。

我想我只要在这里加上关于ORMLite包的0.02美元。

它是Hibernate的轻量级替代品,并使用原生Android OS数据库调用来支持Android上的SQLite。它还支持在其他体系结构上使用JDBC的许多其他数据库类型。我们有一个用于ORMLite问题的Android邮件列表

我也在寻找Android上的ORM。我测试了ActiveAndroidNeoDatisdb4o,我想我会使用最后两个中的一个。

NeoDatis和db4o非常相似,所以我想要一些建议来选择最好的一个。有人在他的项目中使用了其中之一吗?我将在免费和付费应用中使用它,但似乎这两款应用在Android上没有任何许可限制。

有一个基准在这里似乎说NeoDatis比db4o更快,但我不知道我们是否可以基于这个观点。

我喜欢ActiveAndroid。它似乎是专门为Android编写的。这对我来说是个加分项。

我有一些Ruby on Rails的经验,如果你喜欢ActiveRecord的Rails方式,你可以很快地使用这个库。

https://www.activeandroid.com/

还有一个新成员:android-active-record。 它是一个非常轻量级且易于使用的持久性框架,支持SQLite http://code.google.com/p/android-active-record/ < / p >

https://github.com/ahmetalpbalkan/orman

Orman框架可能会帮助您。它是专门为此设计的,非常小巧实用。

http://hadi.sourceforge.net

这个工具非常简单易用。

有db4o的负面经验(第8节):索引不能正常工作(异常等)。所以我没有设法避免在对象结构中有对象时在外部表中创建重复。更详细的解释在我的问题。希望有一天会好起来。

如果性能和代码大小很重要,请检查greenDAO。我是它的作者,我创建另一个ORM的动机是避免在热点中反射。结果表明,greenDAO的速度比ORMLite快4倍。详细信息请检出功能页面

虽然这是一篇旧文章,但这个话题仍然是相关的。因此,我想分享一篇有趣的文章和解决问题中提到的大部分问题的好方法:

http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/

希望任何人发现这和我一样有用!

我自己的DroidParts / http://droidparts.org/刚刚达到0.5版本。这是一个DI/ORM库。更多。< br > 没有太多的文档,但包括一个示例应用程序

这个问题不会变老,但建议的框架会变老。因此,这里首先列出了我在这类框架中发现的重要内容,以便进行比较:

  • 是否存在Maven或Gradle工件?(显然,这是一个很大的加分项,取决于你是使用maven还是gradle)
  • 代码是否以一种简单的方式访问,包括对提交的快速概述,以判断活动?(在github上托管的代码对我来说是一个明确的加分项,在这方面)
  • 发布管理:是否有发布/发布标签和工件?(有一些托管在github上,需要git克隆或提供主tarball供下载-对我来说,如果没有在README中设置和处理发布标签,这是一个很大的缺点)
  • 至于大小问题,我在容易获得的地方提供了一些提示(我没有下载任何东西,所以从那些没有发布工件的项目中没有大小)

这里是一个框架的列表,并对以上几点进行了说明。我查找了一些更像有刺铁丝网和Hadi,但我只添加了那些在2011年之后有一些活动的。

我没有尝试过其中的任何一个,但也许我可以通过列出目前活跃的项目来节省当前读者的时间。如果你知道其他项目满足以上的一些要求,并且已经有了一些重要的开发(经过一段时间),请添加评论。

EDIT(2013年11月):更新列表到项目的当前状态。其中一些已经添加了发布标签到他们的github回购以及Maven/Gradle支持。干得好!

EDIT(2015年4月):更新列表,添加了Sprinkles(根据@AndroidGecko的评论)和Realm.io。