任何使用Android(“ gPhone”)的人都知道或者在哪里可以找到一个好的ORM工具?代码是用Java编写的,数据库是SQLite。我想找到的是一种给定了对象定义的工具,可以自动生成表和CRUD函数(那会很棒),或者,除非有工具,否则可以采用表定义,对象定义,并自动生成CRUD功能。问题是所有这些必须在Android框架内发生,Android框架对数据库访问的工作方式有自己的约定。
任何使用Android(“ gPhone”)的人都知道或者在哪里可以找到一个好的ORM工具?代码是用Java编写的,数据库是SQLite。我想找到的是一种给定了对象定义的工具,可以自动生成表和CRUD函数(那会很棒),或者,除非有工具,否则可以采用表定义,对象定义,并自动生成CRUD功能。问题是所有这些必须在Android框架内发生,Android框架对数据库访问的工作方式有自己的约定。
Answers:
以为我会在这里添加有关我的ORMLite软件包的 $ 0.02 。
它是对Hibernate的轻量级替代,使用本地Android OS数据库调用来支持Android上的SQLite。它还在其他体系结构上使用JDBC支持许多其他数据库类型。我们有一个针对ORMLite问题的Android邮件列表。
这个问题无法解决,但建议的框架可以解决。因此,这里首先列出了我在这些比较框架中发现的重要内容:
这是上面列出了注意事项的框架列表。我看起来更像是aBatis和Hadi,但我只添加了2011年以后活跃的人。
我没有尝试过任何一种方法,但也许可以通过列出当前的活动项目来节省一些读者的时间。如果您知道满足上述某些条件并且正在进行一些认真的开发工作的其他项目,请添加评论。
编辑(2013年11月):将列表更新为项目的当前状态。其中一些已将发布标签添加到其github存储库以及Maven / Gradle支持中。干得好!
编辑(2015年4月):更新了列表,添加了Sprinkles(根据@AndroidGecko的评论)和Realm.io。
我不知道您所要的是什么,但是如果您的架构要求很灵活,则可以找到SQLite的另一种选择。可能值得检查db4o:
ActiveAndroid (20美元)看起来可能正是您所需要的。
我喜欢ActiveAndroid。它似乎是专门为Android编写的。对我来说,这感觉像是一个加号。
我有一些Ruby on Rails的经验,如果您喜欢ActiveRecord的Rails方式,则可以很快使用此库。
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来说可能对您有利。
该工具非常简单易用。
我已经为Android开发了自己的JPA ORM实现。它尚未完全完成功能,但是您可以使用@ Entity,@ Id,@ Column批注对类进行批注,并获得可以存储和从SQLite数据库检索的JPA实体。在将其发布给公众之前,它需要更多功能和清理功能,但如果有足够的兴趣,它可能会加快我的工作。
即使这是一篇过时的文章,该主题仍然有意义。因此,我想分享一篇有趣的文章和一种很好的方法来解决问题中提到的大多数问题:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
希望任何人都觉得这和我一样有用!
我自己的DroidParts /http://droidparts.org/刚达到v0.5。这是一个DI / ORM库等等。
没有太多文档,但是包含一个示例应用程序。
对db4o(v。8)有负面的经验:索引无法正常工作(异常等)。因此,当对象结构中包含对象时,我没有设法避免在外部表中创建重复项。我的问题中有更详细的解释。希望有一天会更好。