任何在Android上工作的人('gPhone')都拥有或知道我可以找到一个好的ORM工具的地方吗?代码用Java编写,数据库是SQLite . 我想找到的是一个给定对象定义的工具,可以自动生成表和CRUD函数(这将是很棒的),或者除此之外,一个可以采用表定义,对象定义,并自动生成CRUD功能 . 问题是所有这一切都必须在Android框架内发生,Android框架有自己的数据库访问工作方式 .
如果性能和代码大小很重要,请查看greenDAO . 我是它的作者,我创建另一个ORM的动机是避免在热点中反映 . 事实证明,greenDAO可以比ORMLite快4倍 . 有关详细信息,请查看feature page .
http://hadi.sourceforge.net
该工具非常简单易用 .
这个问题不能老化,但建议的框架可以 . 所以,这里首先列出我在这样的框架中发现重要的内容进行比较:
是否有Maven或Gradle工件? (这是一个很大的优势,取决于你是否使用maven或gradle,显然)
代码是否可以通过简单的方式访问,包括快速概述提交以判断活动? (在github上托管的代码对我来说是一个明确的优势,就此而言)
发布管理:是否有发布/发布标记和工件? (有一些托管在github上,需要git克隆或提供主tarball下载 - 对我来说,如果不是偶数版本标签在README中设置和解决,那么我会发现一个很大的减号
因为大小问题我提出了一些很容易获得的提示(我没有下载任何东西,所以从那些没有提供发布工件的项目中没有大小)
这里有一个框架列表,上面有关于上述几点的注释 . 我查了一些更像aBatis和Hadi但我只添加了那些在2011年之后有一些活动的人 .
http://ormlite.com,Maven artifact,52 kB,SVN,网站很难......但似乎有很多例子,根据http://ormlite.com/changelog.txt,最后一个版本是2013年的4.48,https://github.com/j256/ormlite-core(发布标签),最后一次活动2015年3月
http://greendao-orm.com,良好的维护,Maven artifact,重点:性能快,体积小,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(发布标签,> 600颗星),还有依赖注入,Maven工件,积极维护
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 repos以及Maven / Gradle支持 . 干得好!
编辑(2015年4月):更新了列表,添加了Sprinkles(根据@AndroidGecko的评论)和Realm.io .
我已经开发了自己的Android JPA ORM实现 . 它还没有完整的功能完整,但您可以使用@ Entity,@ Id,@ Column注释来注释类,并且您可以获得可以从SQLite数据库存储和检索的JPA实体 . 在我将它发布给公众之前,它需要更多的功能和清理,但如果有足够的兴趣,它可能会加快我的努力 .
https://github.com/ahmetalpbalkan/orman
Orman框架可能对您有所帮助 . 它专为此而设计,非常小且有用 .
我不知道你要求的任何东西,但是如果您的架构要求是灵活的,那么您可以找到一种替代SQLite的替代方案 . 可能值得查看db4o:
Android db4o
Code comparison examples
ActiveAndroid(20美元)看起来可能正是您所需要的 .
还有一个新人:android-active-record . 它非常轻量级,易于使用的SQL支持的Android持久性框架http://code.google.com/p/android-active-record/
以为我只是在这里添加我的$ 0.02关于我的ORMLite包:
http://ormlite.com/
它是Hibernate的轻量级替代品,使用原生Android OS数据库调用来支持Android上的SQLite . 它还支持许多其他使用JDBC的其他数据库类型架构 . 我们有一个Android mailing list的ORMLite问题 .
我也在寻找Android上的ORM . 我测试了ActiveAndroid,NeoDatis和db4o,我想我会用最后两个中的一个 .
NeoDatis和db4o非常相似,所以我想要一些建议来选择最好的一个 . 是否有人在他的项目中使用其中一个?我将它用于免费和付费的应用程序,但似乎这两个没有Android的许可限制 .
有一个基准here,似乎说NeoDatis比db4o快,但我不知道我们是否可以根据这个看法 .
有db4o的负面经验(v.8):索引没有管理如何避免在对象结构中有对象时在外表中创建重复项 . 我的question中有更详细的解释 . 希望有一天会更好 .
即使这是一篇旧帖子,该主题仍然具有相关性 . 因此,我想分享一篇有趣的文章和很好的方法来解决问题中提到的大多数问题:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
希望有人觉得这和我一样有用!
这个主题可能会给你一些探索:Lightweight Alternatives to Hibernate
我自己DroidParts /http://droidparts.org/刚刚达到v0.5 . 这是一个DI / ORM库等等 .文档不多,但包含一个示例应用程序 .
我喜欢ActiveAndroid . 它似乎专门为Android编写 . 这对我来说是个好消息 .
我有一些Ruby on Rails的经验,如果你喜欢ActiveRecord的Rails方式,你可以很快地使用这个库 .
https://www.activeandroid.com/
来自Aptana的ActiveRecordJS是一个应该在gPhone上运行的Javascript ORM . 它旨在与Jaxer和Gears一起使用 . 使用Jaxer适配器时,可以连接到SQLLite .
更新:我认为我没有说清楚,但ActiveRecordJS是一个运行客户端的ORM,这对gPhone来说可能是一个优势 .
16 回答
如果性能和代码大小很重要,请查看greenDAO . 我是它的作者,我创建另一个ORM的动机是避免在热点中反映 . 事实证明,greenDAO可以比ORMLite快4倍 . 有关详细信息,请查看feature page .
http://hadi.sourceforge.net
该工具非常简单易用 .
这个问题不能老化,但建议的框架可以 . 所以,这里首先列出我在这样的框架中发现重要的内容进行比较:
是否有Maven或Gradle工件? (这是一个很大的优势,取决于你是否使用maven或gradle,显然)
代码是否可以通过简单的方式访问,包括快速概述提交以判断活动? (在github上托管的代码对我来说是一个明确的优势,就此而言)
发布管理:是否有发布/发布标记和工件? (有一些托管在github上,需要git克隆或提供主tarball下载 - 对我来说,如果不是偶数版本标签在README中设置和解决,那么我会发现一个很大的减号
因为大小问题我提出了一些很容易获得的提示(我没有下载任何东西,所以从那些没有提供发布工件的项目中没有大小)
这里有一个框架列表,上面有关于上述几点的注释 . 我查了一些更像aBatis和Hadi但我只添加了那些在2011年之后有一些活动的人 .
http://ormlite.com,Maven artifact,52 kB,SVN,网站很难......但似乎有很多例子,根据http://ormlite.com/changelog.txt,最后一个版本是2013年的4.48,https://github.com/j256/ormlite-core(发布标签),最后一次活动2015年3月
http://greendao-orm.com,良好的维护,Maven artifact,重点:性能快,体积小,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(发布标签,> 600颗星),还有依赖注入,Maven工件,积极维护
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 repos以及Maven / Gradle支持 . 干得好!
编辑(2015年4月):更新了列表,添加了Sprinkles(根据@AndroidGecko的评论)和Realm.io .
我已经开发了自己的Android JPA ORM实现 . 它还没有完整的功能完整,但您可以使用@ Entity,@ Id,@ Column注释来注释类,并且您可以获得可以从SQLite数据库存储和检索的JPA实体 . 在我将它发布给公众之前,它需要更多的功能和清理,但如果有足够的兴趣,它可能会加快我的努力 .
https://github.com/ahmetalpbalkan/orman
Orman框架可能对您有所帮助 . 它专为此而设计,非常小且有用 .
我不知道你要求的任何东西,但是如果您的架构要求是灵活的,那么您可以找到一种替代SQLite的替代方案 . 可能值得查看db4o:
Android db4o
Code comparison examples
ActiveAndroid(20美元)看起来可能正是您所需要的 .
还有一个新人:android-active-record . 它非常轻量级,易于使用的SQL支持的Android持久性框架http://code.google.com/p/android-active-record/
以为我只是在这里添加我的$ 0.02关于我的ORMLite包:
它是Hibernate的轻量级替代品,使用原生Android OS数据库调用来支持Android上的SQLite . 它还支持许多其他使用JDBC的其他数据库类型架构 . 我们有一个Android mailing list的ORMLite问题 .
我也在寻找Android上的ORM . 我测试了ActiveAndroid,NeoDatis和db4o,我想我会用最后两个中的一个 .
NeoDatis和db4o非常相似,所以我想要一些建议来选择最好的一个 . 是否有人在他的项目中使用其中一个?我将它用于免费和付费的应用程序,但似乎这两个没有Android的许可限制 .
有一个基准here,似乎说NeoDatis比db4o快,但我不知道我们是否可以根据这个看法 .
有db4o的负面经验(v.8):索引没有管理如何避免在对象结构中有对象时在外表中创建重复项 . 我的question中有更详细的解释 . 希望有一天会更好 .
即使这是一篇旧帖子,该主题仍然具有相关性 . 因此,我想分享一篇有趣的文章和很好的方法来解决问题中提到的大多数问题:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
希望有人觉得这和我一样有用!
这个主题可能会给你一些探索:Lightweight Alternatives to Hibernate
我自己DroidParts /http://droidparts.org/刚刚达到v0.5 . 这是一个DI / ORM库等等 .
文档不多,但包含一个示例应用程序 .
我喜欢ActiveAndroid . 它似乎专门为Android编写 . 这对我来说是个好消息 .
我有一些Ruby on Rails的经验,如果你喜欢ActiveRecord的Rails方式,你可以很快地使用这个库 .
https://www.activeandroid.com/
来自Aptana的ActiveRecordJS是一个应该在gPhone上运行的Javascript ORM . 它旨在与Jaxer和Gears一起使用 . 使用Jaxer适配器时,可以连接到SQLLite .
更新:我认为我没有说清楚,但ActiveRecordJS是一个运行客户端的ORM,这对gPhone来说可能是一个优势 .