GreenDao交易

2024-05-05

我在用着GreenDao存储大量数据,来自休息服务.

我的很多实体都与关系相关。 一切都很顺利,但明天我必须实施坚如磐石的工作流程。

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

通常我会与交易 and rollback如果出现异常情况, 否则提交到数据库。

现在,每次创建对象时,我只使用 insertorupdate 来保存实体。

会是什么实施方式 this?


在插入和更新时 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 https://stackoverflow.com/a/23604766/731183 post.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GreenDao交易 的相关文章

随机推荐