如果将Dao缓存在DaoManage中,为什么要将Dao缓存在DatabaseHelper中

时间:2013-07-28 15:38:12

标签: 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中缓存它会导致任何性能问题吗?

1 个答案:

答案 0 :(得分:4)

  

如果我像这样获得dao而不是在DatabaseHelper中缓存它会导致任何性能问题吗?

不,这当然没问题。您每次都在进行Hashmap.get(..)调用,但这一点非常小 - 特别是与任何DAO操作或IO相比时。

我建议不要在每次调用DAO时执行其中一项操作:

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

但是如果你想在方法开始时得到它然后执行几个操作那么这应该没问题。