Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OrmLite:Dao.callBatchTasks()和TransactionManager.callInTransaction()之间的区别_Java_Android_Transactions_Ormlite - Fatal编程技术网

Java OrmLite:Dao.callBatchTasks()和TransactionManager.callInTransaction()之间的区别

Java OrmLite:Dao.callBatchTasks()和TransactionManager.callInTransaction()之间的区别,java,android,transactions,ormlite,Java,Android,Transactions,Ormlite,这些方法的区别是什么?我已经阅读了文档,但我不明白callBatchTasksmethod做什么。文件说: 这将关闭数据库所称的“自动提交”模式,运行 调用able,然后重新启用“自动提交” 这不是交易吗 谢谢 Dao.callBatchTasks()和TransactionManager.callInTransaction()之间的区别 差异取决于您使用的数据库。在安卓系统下,没有区别。callBatchTasks(…)的javadocs说明: 调用将执行许多批处理任务的Call-able。当

这些方法的区别是什么?我已经阅读了文档,但我不明白
callBatchTasks
method做什么。文件说:

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

这不是交易吗

谢谢

Dao.callBatchTasks()和
TransactionManager.callInTransaction()之间的区别

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

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

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);
    }
    ...
private CT doCallBatchTasks(数据库连接、布尔保存、,
Callable Callable)抛出SQLException{
if(databaseType.isBatchUseTransation()){
返回TransactionManager.callInTransaction(连接、已保存、数据库类型、,
可调用);
}
...
因此在内部,在Android下使用时,
dao.callBatchTasks(…)
是通过调用
TransactionManager.callInTransaction(…)