11

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

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

到目前为止,我只找到了两个大的 ORM 库:

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

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

  • ORMLite 使用注解,由于这个错误,这是 pre-honeycomb 中的大性能问题

  • GreenDAO 正在使用某种代码生成器,这会减慢我的开发速度,因为我必须编写生成器,然后使用生成的代码。而且我不太喜欢这个主意。

  • DB4O 是 JPA,我一直认为它在内存使用上速度慢且重,因此不适合低端设备(记住 Android API v7)


ad @ChenKinnrot
估计的负载应该足以考虑使用 ORM。
在我的情况下,它大约有 25-30 个唯一表,并且至少有 10 个表连接(一次 2-4 个表)。大约 300-500 个唯一字段(列)


所以我的问题是:

  1. 我应该在 Android 应用程序中使用 ORM/JPA 层吗?
  2. 如果是这样,您会推荐我使用哪个库?(也请添加一些论点)
4

5 回答 5

4

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

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

于 2012-07-13T14:37:32.877 回答
2

ORM 层很有吸引力。

然而,在实践中,我要么自己编写简单的 ORM,要么使用与 ORM 配合不佳的Content Provider范式。

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

“我们谈论的是 25-30 个唯一表,以及至少 10 个表连接。大约 300-500 个唯一字段(列)”

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

我的 2 美分。

于 2012-07-13T14:35:05.700 回答
1

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

于 2012-09-25T15:48:29.307 回答
0

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

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

如果您不想充分利用 sql db,请使用 orm,我对您提到的这种 orm 没有经验,所以我不能说选择什么。

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

于 2012-07-13T14:25:43.947 回答
0

根据我的经验,使用 ORM 引擎给我带来了很多好处。但是,在某些情况下,我不得不处理性能问题。

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

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

于 2014-10-28T14:22:36.087 回答