代码之家  ›  专栏  ›  技术社区  ›  Héctor

OrmLite:Dao.callBatchTasks()和TransactionManager.callInTransaction()之间的差异

  •  4
  • Héctor  · 技术社区  · 9 年前

    这些方法之间的区别是什么?我看了文件,但我不明白什么 callBatchTasks 文件中说:

    这将关闭数据库所称的“自动提交”模式,运行 调用able,然后重新启用“自动提交”。

    这不是交易吗?

    谢谢

    1 回复  |  直到 9 年前
        1
  •  8
  •   Gray droiddeveloper    9 年前

    两者之间的差异 Dao.callBatchTasks() TransactionManager.callInTransaction()

    差异取决于您使用的数据库。在安卓系统下,没有区别。的javadocs callBatchTasks(...) 说:

    调用将执行许多批处理任务的调用表。这是为了在您希望同时运行多个数据库操作时的性能——可能是从文件加载数据。这将关闭数据库所称的“自动提交”模式,运行可调用程序,然后重新启用“自动提交“。如果不支持自动提交,则将使用事务。

    Android的SQLite是其中一个数据库。在内部ORMLite代码中,您可以看到:

    private <CT> CT doCallBatchTasks(DatabaseConnection connection, boolean saved,
            Callable<CT> callable) throws SQLException {
        if (databaseType.isBatchUseTransaction()) {
            return TransactionManager.callInTransaction(connection, saved, databaseType,
                callable);
        }
        ...
    

    所以在内部,当在Android下使用时, dao.callBatchTasks(...) 打电话到吗 TransactionManager.callInTransaction(...) .