Android 如果Dao缓存在DAOManager中,为什么要在DatabaseHelper中缓存Dao

Android 如果Dao缓存在DAOManager中,为什么要在DatabaseHelper中缓存Dao,android,ormlite,Android,Ormlite,根据ORMLite文档,所有创建的Dao对象都缓存在DaoManager中。但在ORMLite中,我看到Dao类再次缓存在DatabaseHelper类中。我们真的需要它吗?前 public Dao<SimpleData, Integer> getDao() throws SQLException { if (simpleDao == null) { simpleDao = getDao(SimpleData.class); } return

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

public Dao<SimpleData, Integer> getDao() throws SQLException {
    if (simpleDao == null) {
        simpleDao = getDao(SimpleData.class);
    }
    return simpleDao;
}
public Dao getDao()抛出SQLException{
if(simpleDao==null){
simpleDao=getDao(SimpleData.class);
}
返回simpleDao;
}
我的计划是在需要时获取Dao对象,而不是将其缓存在我的代码库中(在DatabaseHelper类中),只是希望允许DaoManager缓存Dao

这就是我计划使用的

DatabaseHelper databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
Dao<SimpleData, Integer> myDao = databaseHelper.get.getDao(SimpleData.class);
DatabaseHelper-DatabaseHelper=OpenHelperManager.getHelper(这是DatabaseHelper.class);
daomydao=databaseHelper.get.getDao(SimpleData.class);
如果我像这样获取dao,而不是将其缓存在DatabaseHelper中,会出现性能问题吗

如果我像这样获取dao,而不是将其缓存在DatabaseHelper中,会出现性能问题吗

不,这当然好。您每次都在执行一个
Hashmap.get(…)
调用,但这是一个非常小的影响——特别是与任何DAO操作或IO相比

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

databaseHelper.getDao(SimpleData.class).create(...);
databaseHelper.getDao(SimpleData.class).update(...);
但是如果您只想在方法开始时获取它,然后执行一些操作,那么这应该可以执行得很好

如果我像这样获取dao,而不是将其缓存在DatabaseHelper中,会出现性能问题吗

不,这当然好。您每次都在执行一个
Hashmap.get(…)
调用,但这是一个非常小的影响——特别是与任何DAO操作或IO相比

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

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

但是,如果您只想在方法开始时获取它,然后执行一些操作,那么这应该会执行得很好。

谢谢@Gray,我得到了完美的答案。谢谢你为android创建了最好的ORM框架。谢谢@Gray,我得到了完美的答案。感谢您为android创建了最好的ORM框架。