gpt4 book ai didi

android - GreenDao 中的交易

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:40 25 4
gpt4 key购买 nike

我正在使用 GreenDao 存储大量数据,这些数据来自 REST 服务

我的很多实体都与关系有关。一切都很好,但明天我必须实现一个坚如磐石的工作流程。

当我加载数据时,我必须检查是否发生错误。如果是这样,我必须确保没有存储任何内容在 SQLite 数据库中。

通常我会使用transactionsrollback 以防异常,否则提交给数据库。

现在我每次创建对象时都使用 insertordelete 来保存实体。

实现的方法是什么?

最佳答案

在插入和更新时,Greendao 检查是否有正在进行的事务。如果是这种情况,greendao 将不会启动新事务。

所以唯一要做的就是在您的数据库上启动一个事务,并在您的工作完成或您发现错误后提交/回滚。所有插入和更新都将在同一个事务中,这在数据一致性和性能方面都有好处,因为 greendao 将为每个插入和更新操作启动带有提交/回滚的新事务。

总结一下你可以使用这样的代码:

SQLiteDatabase db = dao.getDatabase();
db.beginTransaction();

try {
// do all your inserts and so on here.
db.setTransactionSuccessful();
} catch (Exception ex) {
} finally {
db.endTransaction();
}

我还对我的 greendao 进行了一些调整,使其不缓存插入的对象以获得进一步的性能和内存使用优势(因为我一次插入大量数据并且在运行时根据用户输入我只使用很少的数据)。参见 this发布。

关于android - GreenDao 中的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com