任何适用于Android开发的优秀ORM工具?[关闭]


285

任何使用Android(“ gPhone”)的人都知道或者在哪里可以找到一个好的ORM工具?代码是用Java编写的,数据库是SQLite。我想找到的是一种给定了对象定义的工具,可以自动生成表和CRUD函数(那会很棒),或者,除非有工具,否则可以采用表定义,对象定义,并自动生成CRUD功能。问题是所有这些必须在Android框架内发生,Android框架对数据库访问的工作方式有自己的约定。


我认为现在没有可用的了。
mparaz

2
它的2014年。我想我会提到Sprinkles(github.com/emilsjolander/sprinkles),因为没有人提及它。.github上有500颗星,位于meaven Central上,内容观察者值得检查
AndroidGecko

是2015年。Software Tree最近发布了JDXA,这是一个简单但功能强大且灵活的Android ORM。支持一对一,一对多,多对一以及多对多关系的继承。JDXA的POJO(普通旧Java对象)友好的非侵入式编程模型不需要您以任何方式更改Java类:-无需从任何基类中继承您的域类-无需使用注释将源代码弄乱-无需DAO类-没有源代码生成
Damodar Periwal

在JDXA ORM上查看这个不错的教程
Damodar Periwal

如果您喜欢没有附加库依赖项的纯自然的Android代码,请查看SQLite对等类代码生成器示例。它基于注释,并支持组合的主键,组合的唯一约束和索引。
RookieGuy

Answers:


111

以为我会在这里添加有关我的ORMLite软件包的 $ 0.02 。

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


1
ORMLite是否具有对(多个)到(多个|一个)关系的内置支持?我找不到关于这方面的很多信息...如果没有,有没有计划呢?
ferdystschenko 2011年

1
取决于您所说的“支持”。有一些关于如何使用“外来对象”的示例代码,它们是您一对多的方法,还有一些有关如何使用联接表完成多对多的示例(ormlite.com/docs/examples)。向用户列表发布更多问题(groups.google.com/group/ormlite-user)。
灰色

7
是的,它肯定比ActiveAndroid大。当然还有更多的功能。与AA的许可证相对应的也是免费软件。但是,如果大小是目标,那么ORMLite不适合您。
灰色

4
@灰色讽刺,因为它应该是“精简版”:P
Salman von Abbas

5
确实是@SalmanPK。虽然有不同程度的轻度。:-)
灰色

66

这个问题无法解决,但建议的框架可以解决。因此,这里首先列出了我在这些比较框架中发现的重要内容:

  • 有Maven或Gradle工件吗?(显然,这是一个很大的优势,具体取决于您使用的是maven还是gradle)
  • 是否可以通过简单的方式访问代码,包括快速概述提交以判断活动?(就此而言,托管在github上的代码对我来说是绝对的优势)
  • 发布管理:是否有发布/发布标签和工件?(有些托管在github上,需要git clone或提供主tarball下载-对我来说是一个很大的缺点,即使没有在README中设置和解决发行标签)
  • 由于大小很重要,因此我提出了一些易于获得的提示(我没有下载任何内容,因此从那些不提供发行工件的项目中没有大小)

这是上面列出了注意事项的框架列表。我看起来更像是aBatis和Hadi,但我只添加了2011年以后活跃的人。

我没有尝试过任何一种方法,但也许可以通过列出当前的活动项目来节省一些读者的时间。如果您知道满足上述某些条件并且正在进行一些认真的开发工作的其他项目,请添加评论。

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

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


我强烈建议您使用Realm,它的工作速度非常快而且流畅!
克罗诺(Crono)

39

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


5
看起来还不错,但是必须生成Dao对我来说是一个
拒绝

4
是的,对于开发人员而言,生成代码是额外的步骤,但它可以为您节省大量应用程序性能。引导和解析数据库结果都明显更快。其他工具依赖于反射,这在Android中非常慢。
Markus Junginger

1
我在项目中使用greenDao,对此感到非常满意。
mabac 2012年

3
@greenrobot您是否使用lib展示了一些“大型应用”?
StErMi 2012年

1
@StErMi路径正在使用greenDAO。他们的安装量> 1M。见github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger,


9

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


14
我知道您在这里不做任何变动,但是当您在SO上提及自己的一种产品时,能否在帖子中透露您的隶属关系?我知道您的名字位于链接页面的页脚中,但我们正努力打击垃圾填埋行为(并非如此),因此我们要求所有人遵循相同的披露准则。谢谢。
比尔蜥蜴

4
请注意,ActiveAndroid不是免费的。
gak 2010年

7
ActiveAndroid现在免费且开源 -pardom.github.com/ActiveAndroid
Michael Pardo

7

我喜欢ActiveAndroid。它似乎是专门为Android编写的。对我来说,这感觉像是一个加号。

我有一些Ruby on Rails的经验,如果您喜欢ActiveRecord的Rails方式,则可以很快使用此库。

https://www.activeandroid.com/


好的框架,但是它与org.codehous.jackson库冲突,因此,如果在项目中使用它,您将无法使用ActveAndroid
endryha 2011年

1
它如何冲突?您是否将其报告为tracker.activeandroid.com中的错误?
Michael Pardo

也许看看androrm.the-pixelpla.net,它具有大多数功能,我还会说更多。加:它是免费和开源的。
philgiese 2011年


6

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

NeoDatis和db4o确实很相似,因此我想建议一些最佳的选择。有人在项目中使用其中之一吗?我将其用于免费和付费应用程序,但似乎两者对Android没有任何许可限制。

有一个标杆在这里,似乎说NeoDatis比db4o的速度更快,但我不知道我们是否能在此基础上我的意见。


Db40和NeoDatis是对象数据库,只是这些数据库的大小完全禁止在Android上使用
Bostone 2011年

@ DroidIn.net您能否提供维持您的评论的链接?
塞尔吉奥2012年


2

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

更新:我想我没有说清楚,但是ActiveRecordJS是运行客户端的ORM,这对gPhone来说可能对您有利。


用Java代码?还是用JavaScript代码?
GWLlosa

我很确定您在说的是纯粹用于基于浏览器(Web)应用程序的Javascript解决方案。我看不到它与Android的本机应用程序开发有何关系。
布莱恩·莱西


1

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


听起来很有趣,您是否已 看看/尝试?马丁,干杯
MartinGrotzke

一年多以后,进展如何?Android上的JPA +批注听起来很棒!
蜘蛛侠



0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.