用于Android开发的任何好的ORM工具?

时间:2008-12-16 14:47:26

标签: java android sqlite orm crud

任何在Android上工作的人('gPhone')都拥有或知道我可以找到一个好的ORM工具的地方吗?代码用Java编写,数据库是SQLite。我想要找到的是一个给定对象定义的工具,可以自动生成表和CRUD函数(这将是非常棒的),或者除此之外,一个可以采用表定义,对象定义,并自动生成CRUD功能。问题是所有这一切都必须在Android框架内发生,Android框架有自己的数据库访问工作方式。

15 个答案:

答案 0 :(得分:110)

以为我只是在这里添加我的$ 0.02关于我的ORMLite包:

  

http://ormlite.com/

它是Hibernate的轻量级替代品,使用原生Android操作系统数据库调用来支持Android上的SQLite。它还支持在其他体系结构上使用JDBC的许多其他数据库类型。我们对ORMLite问题有Android mailing list

答案 1 :(得分:66)

这个问题不能老化,但建议的框架可以。所以,这里首先列出我在这样的框架中发现重要的内容进行比较:

  • 是否有Maven或Gradle神器? (这是一个很大的好处,取决于你是否使用maven或gradle,显然)
  • 代码是否可以通过简单的方式访问,包括快速概述提交以判断活动? (github上托管的代码对我来说是一个明确的加分,就此而言)
  • 发布管理:是否有发布/发布标记和工件? (有一些托管在github上,需要git clone或者提供主tarball下载 - 对我来说,一个大的减号,如果没有发布标签在README中设置和解决)
  • 因为大小问题我提出了一些很容易获得的提示(我没有下载任何东西,所以从那些没有发布工件的项目中没有大小)

以下是一个框架列表,其中包含上述各点的注释。我查了一些更像aBatis和Hadi但我只添加了那些在2011年之后有一些活动的人。

我还没有尝试过这些,但也许我可以通过列出当今活跃的项目来节省当前读者的时间。如果您知道其他项目满足上述某些要点并且有一些严重的发展(在一段时间内),请添加评论。

EDIT(2013年11月):将列表更新为项目的当前状态。其中一些已将释放标记添加到其github repos以及Maven / Gradle支持。干得好!

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

答案 2 :(得分:39)

如果效果和代码大小很重要,请查看greenDAO。我是它的作者,我创建另一个ORM的动机是避免在热点中反映。事实证明,greenDAO可以比ORMLite快4倍。查看feature page了解详情。

答案 3 :(得分:10)

我不知道你要求的任何东西,但是如果你的架构要求很灵活,你可能会发现SQLite的另一种选择。可能值得查看 db4o

答案 4 :(得分:9)

ActiveAndroid ($ 20)看起来可能正是您所需要的。

答案 5 :(得分:7)

我喜欢ActiveAndroid。它似乎是专门为Android编写的。这对我来说是个好消息。

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

https://www.activeandroid.com/

答案 6 :(得分:6)

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

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

有一个基准here似乎说NeoDatis比db4o快,但我不知道我们是否可以根据这个看法。

答案 7 :(得分:6)

https://github.com/ahmetalpbalkan/orman

Orman框架可能对您有所帮助。它专为此而设计,非常小而且实用。

答案 8 :(得分:3)

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

答案 9 :(得分:2)

来自Aptana的

ActiveRecordJS是一个应该在gPhone上运行的Javascript ORM。它旨在与Jaxer和Gears一起使用。使用Jaxer适配器时,可以连接到SQLLite。

更新:我认为我没有说清楚,但ActiveRecordJS是一个运行客户端的ORM,这对gPhone来说可能是一个优势。

答案 10 :(得分:2)

http://hadi.sourceforge.net

此工具非常简单易用。

答案 11 :(得分:1)

我已经为Android开发了自己的JPA ORM实现。它还没有完整的功能完整,但您可以使用@ Entity,@ Id,@ Column注释来注释类,并且您可以获得可以从SQLite数据库存储和检索的JPA实体。它需要更多的功能和在我将其发布给公众之前进行清理,但如果有足够的兴趣,它可能会加快我的努力。

答案 12 :(得分:1)

尽管这是一篇旧帖子,但该主题仍然具有相关性。因此,我想分享一篇有趣的文章和解决问题中提到的大多数问题的好方法:

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

希望有人觉得这和我一样有用!

答案 13 :(得分:1)

我自己的DroidParts /http://droidparts.org/刚刚达到v0.5。这是一个DI / ORM库&更多。
文档不多,但包含示例应用程序。

答案 14 :(得分:0)

有db4o的负面体验(第8节):索引无法正常工作(异常等)。因此,当对象结构中有对象时,我没有管理如何避免在外表中创建重复项。我question中有更详细的解释。希望有一天会更好。