这些方法有什么区别?我已经阅读了文档,但我不明白callBatchTasks
方法的作用。文档说:
这将关闭数据库调用"自动提交"模式,运行 可调用然后重新启用"自动提交"。
这是一笔交易吗?
感谢。
答案 0 :(得分:6)
之间的差异
Dao.callBatchTasks()
和TransactionManager.callInTransaction()
差异取决于您使用的数据库。在Android下,没有区别。 callBatchTasks(...)
的javadoc说:
调用将执行许多批处理任务的可调用程序。当您想要一次运行多个数据库操作时,这是为了提高性能 - 可能是从文件加载数据。这将关闭数据库调用“自动提交”模式,运行可调用,然后重新启用“自动提交”。如果不支持自动提交,则将使用事务。
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(...)
的调用。