任何在Android(“gPhone”)工作的人都有或知道一个地方,我可以找到一个好的ORM工具?代码是用Java编写的,数据库是SQLite。我想找到的是一个工具,给定对象定义,可以自动生成表和CRUD函数(这将是非常棒的),或者,一个工具,可以接受表定义,对象定义,并自动生成CRUD功能。问题是,所有这些都必须在Android框架内进行,而Android框架对于数据库访问的工作方式有自己的约定。
Aptana中的ActiveRecordJS是一个可以在gPhone上运行的Javascript ORM。它被设计用于Jaxer和Gears。当您使用Jaxer适配器时,您可以连接到SQLLite。
更新:我不认为我说清楚了,但ActiveRecordJS是一个运行客户端的ORM,这可能是你在gPhone上的一个优势。
我不知道你到底想要什么,但是如果你的体系结构需求是灵活的,有一个替代SQLite的选择,你可能会发现它很有用。db4o可能值得一查:
我已经为Android开发了我自己的JPA ORM实现。它还没有完全完成功能,但是您可以使用@Entity、@Id、@Column注释注释类,并且您可以获得可以从SQLite数据库存储和检索的JPA实体。它需要更多的功能。但如果有足够的兴趣,它可能会加速我的努力。
ActiveAndroid (20美元)看起来可能正是你需要的。
我想我只要在这里加上关于ORMLite包的0.02美元。
它是Hibernate的轻量级替代品,并使用原生Android OS数据库调用来支持Android上的SQLite。它还支持在其他体系结构上使用JDBC的许多其他数据库类型。我们有一个用于ORMLite问题的Android邮件列表。
我也在寻找Android上的ORM。我测试了ActiveAndroid, NeoDatis和db4o,我想我会使用最后两个中的一个。
NeoDatis和db4o非常相似,所以我想要一些建议来选择最好的一个。有人在他的项目中使用了其中之一吗?我将在免费和付费应用中使用它,但似乎这两款应用在Android上没有任何许可限制。
有一个基准在这里似乎说NeoDatis比db4o更快,但我不知道我们是否可以基于这个观点。
我喜欢ActiveAndroid。它似乎是专门为Android编写的。这对我来说是个加分项。
我有一些Ruby on Rails的经验,如果你喜欢ActiveRecord的Rails方式,你可以很快地使用这个库。
https://www.activeandroid.com/
https://github.com/ahmetalpbalkan/orman
Orman框架可能会帮助您。它是专门为此设计的,非常小巧实用。
http://hadi.sourceforge.net
这个工具非常简单易用。
有db4o的负面经验(第8节):索引不能正常工作(异常等)。所以我没有设法避免在对象结构中有对象时在外部表中创建重复。更详细的解释在我的问题。希望有一天会好起来。
如果性能和代码大小很重要,请检查greenDAO。我是它的作者,我创建另一个ORM的动机是避免在热点中反射。结果表明,greenDAO的速度比ORMLite快4倍。详细信息请检出功能页面。
虽然这是一篇旧文章,但这个话题仍然是相关的。因此,我想分享一篇有趣的文章和解决问题中提到的大部分问题的好方法:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
希望任何人发现这和我一样有用!
这个问题不会变老,但建议的框架会变老。因此,这里首先列出了我在这类框架中发现的重要内容,以便进行比较:
这里是一个框架的列表,并对以上几点进行了说明。我查找了一些更像有刺铁丝网和Hadi,但我只添加了那些在2011年之后有一些活动的。
我没有尝试过其中的任何一个,但也许我可以通过列出目前活跃的项目来节省当前读者的时间。如果你知道其他项目满足以上的一些要求,并且已经有了一些重要的开发(经过一段时间),请添加评论。
EDIT(2013年11月):更新列表到项目的当前状态。其中一些已经添加了发布标签到他们的github回购以及Maven/Gradle支持。干得好!
EDIT(2015年4月):更新列表,添加了Sprinkles(根据@AndroidGecko的评论)和Realm.io。