Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DataBaseHelper,单例还是非单例?_Android_Ormlite - Fatal编程技术网

Android DataBaseHelper,单例还是非单例?

Android DataBaseHelper,单例还是非单例?,android,ormlite,Android,Ormlite,关于这个主题有一些问题,但没有一个给出确切的理由来解释为什么databaseHelper应该或不应该有一个或多个实例。 什么时候有多个DatabaseHelper实例是个好主意,什么时候不是。较低的复杂性(如果事实确实如此)是否足以成为只拥有一个实例的充分理由?您的数据库助手应该是一个单一实例。每个助手都维护到数据库的单个连接。如果有多个助手连接到同一数据库,则会导致并发问题。Sqlite在单个连接下执行自己的锁定,以确保对数据库的正确并发访问,因此建议并要求在所有数据库操作中使用该单个连接(以

关于这个主题有一些问题,但没有一个给出确切的理由来解释为什么databaseHelper应该或不应该有一个或多个实例。
什么时候有多个DatabaseHelper实例是个好主意,什么时候不是。较低的复杂性(如果事实确实如此)是否足以成为只拥有一个实例的充分理由?

您的
数据库助手
应该是一个单一实例。每个助手都维护到数据库的单个连接。如果有多个助手连接到同一数据库,则会导致并发问题。Sqlite在单个连接下执行自己的锁定,以确保对数据库的正确并发访问,因此建议并要求在所有数据库操作中使用该单个连接(以及该单个帮助器)。

为应用程序中的每个数据库使用一个DatabaseHelper。SQLite负责为您和Android在SQLite数据库中使用Java锁定进行文件锁定(多次读取,仅一次写入)。但是,您仍然可能会遇到并发故障(同时写入模拟连接)。这是您希望避免的多连接部分,这是由DatabaseHelper的一个实例管理的部分。

可能是安全性是第一个原因:)您是说单个实例更安全吗?当然,您必须始终确保在打开连接时,完成这个过程并立即关闭它。我读了好几个线程(实际上Kevins在这个线程中编辑)关于在使用连接后关闭连接的内容。当我使用ORMlite并从DBhelper类获取DAO时,是否需要担心关闭连接?当我调用以下实体时=getDao().queryForId(id);我是否需要担心连接处于打开状态,或者ORMlite会处理此问题?@user965895您不需要关闭连接。Android操作系统会在卸载你的应用程序时处理这些问题。因此,只要我们使用
OpenHelperManager
获取参考资料,我们就应该是好的,对吗?只是好奇你认为你的答案在20分钟前比我的答案有何改进?你提交你的答案时,我正在起草我的答案。。。只是时间问题。