Tom*_*mCB 3 android transactions rollback greendao
我正在使用GreenDao来存储来自REST服务的大量数据.
我的很多实体都与关系联系在一起.一切都很好,但明天我必须实现rockolid工作流程.
当我加载数据时,我必须检查是否发生错误.如果是这样,我必须确保SQLite DB中没有存储任何内容.
通常我会在发生异常的情况下使用事务和回滚,否则将提交到db.
现在我只使用insertordelete来保存实体,每次我创建一个对象.
实现这个的方法是什么?
Ale*_*exS 12
在插入和更新时,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();
}
Run Code Online (Sandbox Code Playgroud)
我也稍微调整了我的greendao,以便它不会缓存插入的对象以获得进一步的性能和memoryusage好处(因为我插入了大量数据,因为我在运行时只使用很少的数据,具体取决于用户输入).看这篇文章.
| 归档时间: |
|
| 查看次数: |
4480 次 |
| 最近记录: |