为Android项目选择ORM(最低API级别7)

时间:2012-07-13 14:10:02

标签: java android database sqlite orm

我目前有一个应用程序,其主要性能问题是使用由JSON响应组成的基于文件的数据库。

我想重写我的应用程序以使用SQLite数据库功能 由于我很懒,我想使用某种ORM。

到目前为止,我发现只有两个大的ORM库:

我的主要目标是尽可能提高处理数据的效果

但我发现这些库有两个可能的问题。

  • ORMLite使用注释,由于this bug

  • ,因此在预蜂窝中存在很大的性能问题
  • GreenDAO正在使用某种代码生成器,这会减慢开发速度,因为我必须编写生成器,然后使用生成的代码。而且我不太喜欢这个想法。

  • DB4O是JPA,我一直认为它在内存使用方面既慢又重,因此不适合低端设备(请记住Android API v7)


ad @ChenKinnrot
估计负荷应足以考虑使用ORM 在我的例子中,它是大约25-30个唯一表,并且至少有10个表连接(一次2到4个表)。大约300-500个独特字段(列)


所以我的问题是:

  1. 我应该在Android应用程序中使用ORM / JPA图层吗?
  2. 如果是,您建议我使用哪个库?(并且还请添加一些参数)

5 个答案:

答案 0 :(得分:4)

我已经使用了ORMLite,并且一旦你掌握了它(几个小时)就发现它非常简单,功能非常强大并且不会导致任何性能问题(在Gingerbread中测试应用程序的HTC欲望和HTC Hero)。

我将在任何需要使用数据库的项目中再次使用它。

答案 1 :(得分:2)

ORM层很有吸引力。

然而,在实践中,我要么写简单的ORM 我自己,要么使用Content Provider范例,它与ORM不能很好地配合。

我已经查看了一些现有的ORM库(主要是ORMLite,activeAnroid),但他们都吓跑了我 因为它们似乎不那么容易上手。

  

"我们正在讨论25-30个唯一表,以及至少10个表连接。   大约300-500个独特字段(列)"

如果您对查询数据的方式有固定且有限的模式,我建议您自己编写ORM / sql。

我的2美分。

答案 2 :(得分:1)

如果您担心应用程序的性能,我建议使用greenDAO。它将使您免于编写大量无聊的代码,因此代码生成不应成为问题。作为回报,它将为您生成实体和数据库单元测试。

答案 3 :(得分:0)

我有一些知识可以分享: 根据定义,ORM比编写自己的sql要慢,它假设是为了简化数据访问的编码,并提供一个通用的解决方案,generic =比你编写查询要慢,如果你对sql了解得很好。

真正的问题是你想要获得多么好的性能,如果它是最好的,不考虑任何数据映射框架,只有sql生成框架可以帮助你更快地编写内容,但是让你完全控制一切。

如果你不想充分利用sql db,请使用orm,我对你提到的这个orm没有经验,所以我不知道该选择什么。

你的数据库并不是那么庞大和复杂,所以你用orm节省的时间不是问题。

答案 4 :(得分:0)

根据我的经验,使用ORM引擎可以带来很多好处。但是,有必要处理性能问题。

我不得不从数据库加载大约10 000行,并且使用标准实现(我使用的是ORMLite),大约需要1分钟才能完成(取决于设备CPU)。

当您需要从数据库中读取大量数据时,您可以执行纯SQL并自行解析结果(在我的情况下,我只需要查询表中的3列)。 ORMLite还允许您检索原始结果。这样,性能提高了10倍。所有10 000行都在5秒或更短时间内加载!