Android SQLite DB和ContentProvider的最佳实践

Android SQLite DB和ContentProvider的最佳实践,android,orm,Android,Orm,我的Android应用程序正在通过一些不同的活动和服务向本地SQLite数据库进行读写操作。相当标准。但我不喜欢将所有数据库细节存储为常量,然后在访问数据库的任何地方使用这些常量的方式。有人建议我将DB包装在ContentProvider中。听起来不错。当我重构代码时,我想我会问: 在Android中,您对本地DB数据存储的最佳实践是什么 在何处以及如何存储“CREATETABLE”语句、列名和其他SQL语句 您是否介意分享您实例化的类的列表,以及每个类的内容(ContentProvider、

我的Android应用程序正在通过一些不同的活动和服务向本地SQLite数据库进行读写操作。相当标准。但我不喜欢将所有数据库细节存储为常量,然后在访问数据库的任何地方使用这些常量的方式。有人建议我将DB包装在ContentProvider中。听起来不错。当我重构代码时,我想我会问:

  • 在Android中,您对本地DB数据存储的最佳实践是什么
  • 在何处以及如何存储“CREATETABLE”语句、列名和其他SQL语句
  • 您是否介意分享您实例化的类的列表,以及每个类的内容(ContentProvider、DatabaseProvider、DatabaseHelper…)
  • 如何协调本地Android DB的结构与通过REST接口提供的服务器端DB
是的,我意识到我遇到了长期存在的“Android对象关系映射框架在哪里?”问题。现在,我主要想听听你是如何用标准SDK中提供的内容来构建Android应用程序的


一如既往,谢谢你的指点

我不知道我有什么答案,除了我真的不喜欢这件事的处理方式之外,我觉得它也很混乱。我通常遵循SDK附带的记事本示例中给出的模式

因此,我正在开发自己的迷你ORM框架,使用注释并管理所有这些。到目前为止一切正常,但我还没有把一切都搞定

现在,我主要想听听你是如何用标准SDK中提供的内容来构建Android应用程序的

我对SQL及其在android中的处理方式不太感兴趣,所以我使用对象数据库。它基本上只允许您非常轻松地将Java对象存储/检索到存储在设备上的平面文件中。db40也是另一个可以在android上使用的对象数据库

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

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

  • CREATE TABLE语句由我的ORMLite实用程序类处理。大多数SQL由DAO类处理
  • 的Android部分解释了类的层次结构。您实现了一个
    DatabaseHelper
    ,它可以帮助您创建数据库更新。您的活动扩展了
    或MLITebaseActivity
    (或服务或选项卡),从而可以访问帮助器和DAO
  • ORMLite不提供与远程REST服务器合并的解决方案

希望这有点帮助。

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

只是为了越来越多地完成这个列表。。。另一个ORM是随提供的ORM解决方案。它不是用来构建企业级数据库的,它更多的是用来在数据库中存储几个实体,并使应用程序能够访问这些实体。其中没有代码生成方法;只需编写实体pojo、行映射器和表def。因此,您可以使用DAO、依赖项注入、IOC风格的生命周期支持等等

到目前为止的ORM功能:

  • 举例查询
  • 几个方面(自动时间戳等)
对于更复杂的数据库内容(使用ORM有点像旧的spring rowmapper时代的手工工作),我目前正在考虑添加ormlite集成


有关更多代码详细信息,请查看

是的,我实际上应该一步一步地阅读整个记事本教程。谢谢你的提醒!开玩笑地说,这里有一段来自Android开发网站的相关视频:正是我要问的问题!谢谢不过这部电影的纪录片很糟糕。甚至不要试图提交bug或功能请求……www.androrm.com/documentation有什么可怕的?你曾经尝试过提交反馈吗?是的,我尝试过。我不得不注册一些愚蠢的社区活动,然后连联系任何人或留下论坛帖子的选择都没有。结果是浪费时间。谢谢你的反馈。我在文档和贡献页面中添加了联系电子邮件,并对phabricator进行了快速描述。