1

根据 ORMLite 文档,所有创建的 Dao 对象都缓存在 DaoManager 中。但是在 ORMLite示例中,我看到 Dao 类再次缓存在 DatabaseHelper 类中。我们真的需要它吗?前任。

public Dao<SimpleData, Integer> getDao() throws SQLException {
    if (simpleDao == null) {
        simpleDao = getDao(SimpleData.class);
    }
    return simpleDao;
}

我的计划是在需要时获取 Dao 对象,而不是将其缓存在我的代码库中(在 DatabaseHelper 类中),只想让 DaoManager 缓存 Dao。

这就是我打算使用的

DatabaseHelper databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
Dao<SimpleData, Integer> myDao = databaseHelper.get.getDao(SimpleData.class);

如果我像这样获得 dao,而不是将其缓存在 DatabaseHelper 中,会有任何性能问题吗?

4

1 回答 1

4

如果我像这样获得 dao,而不是将其缓存在 DatabaseHelper 中,会有任何性能问题吗?

不,这当然没问题。您Hashmap.get(..)每次都在打一个电话,但这只是一个很小的打击——尤其是与任何 DAO 操作或 IO 相比时。

我建议不要在每次调用 DAO 时都执行以下操作之一:

databaseHelper.getDao(SimpleData.class).create(...);
databaseHelper.getDao(SimpleData.class).update(...);

但是,如果您只想在方法开始时获取它,然后执行一些操作,那么这应该可以正常执行。

于 2013-07-28T15:42:13.730 回答