SQLite DB和ContentProvider的最佳实践

时间:2009-11-12 22:33:41

标签: android orm

我的Android应用程序正在从几个不同的活动和服务中读取和写入本地SQLite数据库。很标准。但是我对我将所有数据库详细信息存储为常量的方式感到不满意,然后我在访问数据库的任何地方使用它。我被建议将数据库包装在ContentProvider中。听起来不错。当我重构我的代码时,我想我会问:

  • Android中本地数据库数据存储的最佳做法是什么?
  • 在哪里以及如何存储“CREATE TABLE”语句,列名,其他SQL?
  • 您是否介意共享您实例化的类列表以及每个类的内容(ContentProvider,DatabaseProvider,DatabaseHelper ...)?
  • 如何通过REST接口协调本地Android数据库与服务器端数据库的结构?

是的,我意识到我正处于常年“Android对象关系映射框架的哪个位置?”题。目前,我很想知道如何使用标准SDK中提供的内容来构建Android应用程序。

一如既往,感谢指点!

5 个答案:

答案 0 :(得分:17)

我们已经在Android上调整了ORMLite一段时间了,它运行良好。 ORMLite支持Android与本机数据库调用,并通过JDBC支持其他数据库。您注释了您的类/字段并使用基本DAO类来持久化到SQLite。

  • CREATE TABLE语句由​​ORMLite的实用程序类处理。大多数SQL由DAO类处理。
  • online documentation的Android部分解释了类层次结构。您实现了DatabaseHelper,这有助于创建数据库的更新。您的活动扩展OrmLiteBaseActivity(或服务或标签),可以访问帮助程序和DAO。
  • ORMLite不提供与远程REST服务器合并的解决方案。

希望这有点帮助。

答案 1 :(得分:1)

  

目前,我很想知道如何使用标准SDK中提供的内容来构建Android应用程序。

我不是SQL的真正粉丝,也不是它在android中处理的方式,所以我使用了对象数据库NeoDatis。它基本上只是让您可以非常轻松地将Java对象存储/检索到存储在设备上的平面文件中。 db40也是另一个可以在android上运行的替代对象数据库。

使用此方法没有任何问题,您可能需要注意,包括NeoDatis库会将APK大小增加~700kb。

答案 2 :(得分:0)

我不知道我有答案,除了我不喜欢如何处理,我发现它也非常混乱。我通常遵循SDK附带的记事本示例中给出的模式。

由于这个原因,我正在使用我自己的迷你ORM框架,使用注释并管理所有这些。到目前为止一切正常,但我还没有完成所有工作。

答案 3 :(得分:0)

您还可以查看Androrm。它是一个开源的orm工具,专为android设计。它可以帮助您处理所有与数据库相关的内容。

答案 4 :(得分:0)

只是为了越来越多地完成列表......另一个ORM是随BARACUS Framework提供的ORM解决方案。它不打算构建企业级数据库,更多的是用于在数据库中存储几个实体并使其可由应用程序访问。其中没有代码生成方法;你只需编写你的实体pojo,一个rowmapper和你的表def。因此,您可以使用DAO,依赖注入,IOC样式生命周期支持等等。

到目前为止

ORM功能:

对于更复杂的数据库内容(使用ORM稍微有点像春天的rowmapper时间一样)我正在考虑添加ormlite集成。

有关更多代码详情,请查看tutorial application on github