gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 16:06:23 24 4
gpt4 key购买 nike

根据 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com