任何在 Android ('gPhone') 上工作的人都有或知道我可以找到一个好的 ORM 工具的地方吗?代码是用 Java 编写的,数据库是 SQLite。我想找到的是一个给定对象定义的工具,可以自动生成表和 CRUD 函数(那会很棒),或者,除此之外,一个可以接受表定义、对象定义的工具,并自动生成 CRUD 功能。问题在于,所有这些都必须发生在 Android 框架内,该框架对数据库访问的工作方式有自己的约定。
15 回答
以为我会在这里添加关于我的ORMLite 包的 0.02 美元。
它是 Hibernate 的轻量级替代品,并使用原生 Android OS 数据库调用来支持 Android 上的 SQLite。它还支持在其他架构上使用 JDBC 的许多其他数据库类型。我们有一个用于 ORMLite 问题的Android 邮件列表。
这个问题不会过时,但建议的框架可以。因此,这里首先列出我认为在此类框架中比较重要的内容:
- 是否有 Maven 或 Gradle 工件?(显然,这取决于您使用 maven 还是 gradle,这是一个很大的优势)
- 代码是否可以轻松访问,包括对提交的快速概览以判断活动?(在这件事上,托管在 github 上的代码对我来说绝对是一个优势)
- 发布管理:是否有发布/发布标签和工件?(有些托管在 github 上,需要 git clone 或提供主 tarball 以供下载 - 对我来说,即使没有在 README 中设置和解决发布标签,也是一个很大的减号)
- 由于尺寸很重要,我在容易获得的地方提出了一些提示(我没有下载任何东西,所以从那些不提供发布工件的项目中,没有尺寸)
这是一个框架列表,上面有关于上述几点的注释。我查找了一些更像aBatis和 Hadi,但我只添加了 2011 年之后有一些活动的那些。
- http://ormlite.com , Maven artifact, 52 kB, SVN, the website is... 困难但似乎有很多例子,根据http://ormlite.com/changelog.txt最后一个版本是2013 年 4.48, https://github.com/j256/ormlite-core(发布标签),最后一次活动 2015 年 3 月
- http://greendao-orm.com,良好的维护,Maven神器,重点:性能快,体积小,RAM消耗少。Github:https ://github.com/greenrobot/greenDAO/ (发布标签,> 2300 颗星),最后一次活动 2014 年 11 月
- https://github.com/roscopeco/ormdroid,小尺寸,最后一次活动 2014 年 8 月
- http://www.activeandroid.com , https://github.com/pardom/ActiveAndroid (> 2300 颗星), 良好的维护, 社区, 没有发布标签 (下载点到主 tarball), Maven 工件, 上次活动 2014 年 10 月
- http://droidparts.org , https://github.com/yanchenko/droidparts (release tags, > 600 stars), 还有依赖注入, Maven artifact, 积极维护
- http://www.androrm.com , https://github.com/androrm/androrm (发布标签), 最后一次活动 2014 年 1 月 2 日 (github)
- https://github.com/emilsjolander/sprinkles(发布标签,> 600 颗星),2014 年 5 月的最后一次活动,Maven 工件(感谢@AndroidGecko)
- http://realm.io , https://github.com/realm/realm-java不仅替换了 ORM 还替换了 SQLite,也适用于 iOS(发布标签,> 1600 颗星),积极维护,拥有 Maven 存储库
我没有尝试过任何这些,但也许我可以通过列出现在活跃的项目来为当前的读者节省一点时间。如果您知道其他满足上述某些要点并且(在一段时间内)正在进行一些重大开发的项目,请添加评论。
编辑(2013 年 11 月):将列表更新为项目的当前状态。其中一些已将发布标签添加到其 github 存储库以及 Maven/Gradle 支持。干得好!
编辑(2015 年 4 月):更新列表,添加 Sprinkles(根据 @AndroidGecko 的评论)和 Realm.io。
ActiveAndroid (20 美元)看起来可能正是您所需要的。
我喜欢 ActiveAndroid。它似乎是专门为Android编写的。这对我来说是一个加分项。
我有一些 Ruby on Rails 经验,如果你喜欢 Rails 的 ActiveRecord 方式,你可以很快开始使用这个库。
https://github.com/ahmetalpbalkan/orman
Orman 框架可能会对您有所帮助。它专为此而设计,非常小巧实用。
我也在寻找Android上的ORM。我测试了ActiveAndroid、NeoDatis和db4o,我认为我会使用最后两个中的一个。
NeoDatis 和 db4o 非常相似,所以我想要一些建议来选择最好的。有人在他的项目中使用其中一个吗?我将它用于免费和付费应用程序,但似乎两者对 Android 没有任何许可限制。
这里有一个基准,似乎说 NeoDatis 比 db4o 快,但我不知道我们是否可以以此为基础。
又一个新人:android-active-record。它是由 SQLite http://code.google.com/p/android-active-record/支持的 Android 的非常轻量级且易于使用的持久性框架
Aptana 的ActiveRecordJS是一个应该在 gPhone 上运行的 Javascript ORM。它旨在与 Jaxer 和 Gears 一起使用。当您使用 Jaxer 适配器时,您可以连接到 SQLLite。
更新:我想我没有说清楚,但 ActiveRecordJS 是一个运行客户端的 ORM,这可能对你在 gPhone 上是一个优势。
这个工具非常简单易用。
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!
我已经为 Android 开发了自己的 JPA ORM 实现。它还没有完全完成功能,但是您可以使用@Entity、@Id、@Column 注释对类进行注释,并且您可以获得可以从 SQLite 数据库存储和检索的 JPA 实体。在我将它发布给公众之前,它需要更多的功能和清理,但如果有足够的兴趣,它可能会加速我的工作。
我自己的DroidParts /http://droidparts.org/刚刚达到 v0.5。这是一个 DI/ORM 库等等。
文档不多,但包含一个示例应用程序。
对 db4o (v. 8) 有负面体验:索引无法正常工作(异常等)。因此,当对象结构中有对象时,我没有设法避免在外部表中创建重复项。我的问题中有更详细的解释。希望有一天会更好。