290

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

4

15 回答 15

112

以为我会在这里添加关于我的ORMLite 包的 0.02 美元。

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

于 2010-06-25T18:04:05.080 回答
67

这个问题不会过时,但建议的框架可以。因此,这里首先列出我认为在此类框架中比较重要的内容:

  • 是否有 Maven 或 Gradle 工件?(显然,这取决于您使用 maven 还是 gradle,这是一个很大的优势)
  • 代码是否可以轻松访问,包括对提交的快速概览以判断活动?(在这件事上,托管在 github 上的代码对我来说绝对是一个优势)
  • 发布管理:是否有发布/发布标签和工件?(有些托管在 github 上,需要 git clone 或提供主 tarball 以供下载 - 对我来说,即使没有在 README 中设置和解决发布标签,也是一个很大的减号)
  • 由于尺寸很重要,我在容易获得的地方提出了一些提示(我没有下载任何东西,所以从那些不提供发布工件的项目中,没有尺寸)

这是一个框架列表,上面有关于上述几点的注释。我查找了一些更像aBatis和 Hadi,但我只添加了 2011 年之后有一些活动的那些。

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

编辑(2013 年 11 月):将列表更新为项目的当前状态。其中一些已将发布标签添加到其 github 存储库以及 Maven/Gradle 支持。干得好!

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

于 2013-02-18T17:29:03.427 回答
39

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

于 2011-10-24T09:11:24.353 回答
10

我不知道您所要求的任何东西,但是如果您的架构要求灵活,您可能会发现 SQLite 的替代方案很有用。可能值得一试db4o

于 2009-02-17T21:10:31.413 回答
9

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

于 2010-05-03T21:00:00.340 回答
7

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

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

https://www.activeandroid.com/

于 2010-10-20T12:46:22.263 回答
6

https://github.com/ahmetalpbalkan/orman

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

于 2011-07-15T21:40:36.383 回答
6

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

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

这里有一个基准,似乎说 NeoDatis 比 db4o 快,但我不知道我们是否可以以此为基础。

于 2010-09-09T16:00:56.553 回答
3

又一个新人:android-active-record。它是由 SQLite http://code.google.com/p/android-active-record/支持的 Android 的非常轻量级且易于使用的持久性框架

于 2010-11-18T05:57:23.727 回答
2

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

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

于 2009-02-15T17:52:27.243 回答
2

http://hadi.sourceforge.net

这个工具非常简单易用。

于 2011-09-08T07:43:16.877 回答
1

Even though this is an old post, the topic is still relevant. Hence, I want to share an interesting article and nice approach to solving most of the issues mentioned in the question:

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

Hope anyone finds this as useful as myself!

于 2011-11-30T21:10:16.870 回答
1

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

于 2010-02-10T18:07:57.613 回答
1

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

于 2012-05-19T09:52:25.727 回答
0

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

于 2011-09-13T14:54:02.890 回答