0

我正在尝试将所有 DatabaseRequests 放在 Android 的一个模块中,以便将所有对 DDBB 的访问集中在同一个地方。

我想知道我这样做是否有任何错误。这些应用程序以正确的方式工作,但我担心这样做的最佳实践。

我有一个名为 DatabaseRequest 的静态类,其中所有请求都在其中,例如:

public static void insertUser(Context context, User user) {
    DataBaseHelper mDataBaseHelper = OpenHelperManager.getHelper(context, DataBaseHelper.class);

    try {
        Dao<User, Integer> dao = mDataBaseHelper.getUserDao();
        dao.createOrUpdate(user);

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (mDataBaseHelper != null) {
            OpenHelperManager.releaseHelper();
        }
    }
}

上下文参数是发出请求的活动的上下文。

此代码是否存在任何性能问题?

提前致谢 ;)

4

1 回答 1

0

不,正如 Gray(ORMlite 创建者)在这篇文章中所说:

可以在 Application 类中创建 ORMLite 数据库助手吗?

您的代码最重要的是它保证了单个 databaseHelper 实例。每个实例都有自己的数据库连接,当一个程序中打开多于一 (1) 个与数据库的连接时,就会出现问题。Sqlite同时使用同一个连接处理多个线程,但它不能很好地处理多个连接,并且可能会出现数据不一致的情况。

在您的情况下,您可能一次有多个连接。

我可以为您预设我如何使用 ORMlite 的方法,我有一个单例类public class DbHelper extends OrmLiteSqliteOpenHelper负责创建数据库连接并保存所有Dao字段。您将在那里拥有数据库升级代码和其他一些东西,因此请考虑制作外观类。在我的例子中,每个外观都Dao为一个模型类保存一个对象,我在其中保留复杂项目检索的逻辑(对于简单的情况,我只是将它委托给Daoobject.class )。

于 2015-11-07T12:44:14.513 回答