android - 为什么在 DatabaseHelper 中缓存 Dao,如果它缓存在 DaoManage 中

标签 android ormlite

根据 ORMLite 文档,所有创建的 Dao 对象都缓存在 DaoManager 中。但是在 ORMLite 中 examples ,我看到 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 中,会出现性能问题吗?

最佳答案

Any performance issue if I obtain dao like this, instead of caching it inside DatabaseHelper?

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

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

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

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

关于android - 为什么在 DatabaseHelper 中缓存 Dao,如果它缓存在 DaoManage 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909903/

相关文章:

Android, OrmLite - 观察dao的外部变化

java - 如何快速更改ORM数据库中的多条记录?

java - ORMLite 混合 orderBy() 和 orderByRaw()

android - 应用程序不支持在辅助显示器上启动 Android

android - IntentService 和 HandlerThread 有什么区别?

android - 短信广播接收器在一天后未触发

javascript - 移动浏览器中调用事件的问题

android - 开始新 Activity 时我打开了空白 Activity

android - Ormlite Android 批量插入

java - 如何使用maven解决Heroku上的NoClassDefFoundError?