【发布时间】:2023-03-14 18:32:01
【问题描述】:
我有使用 ActiveAndroid ORM 的应用程序,我需要保存带有内部列表和对象的模型列表,如下所示:
public class MyModel extends Model{
@Expose
@SerializedName(Columns.COLUMN_CREATED_AT)
@Column(name=Columns.COLUMN_CREATED_AT)
private Date createdAt;
.... and other fields
@Expose
@SerializedName(Columns.User)
public User users;
.... another objects
}
所以,保存List<MyModel>的当前逻辑做下一步:
1) 在ActiveAndroid.beginTransaction() / ActiveAndroid.endTransaction(); 块中进行所有更新
2) 对于每个MyModel user model 从数据库中检索、更新和保存
3) 每个MyModel 从数据库中检索、更新和保存
所以整个过程大约需要 7-9 秒。
由于user(和其他内部对象)在不同的MyModel 对象中可以是相同的,所以我接下来要做:
在保存MyModel 的循环中,我得到users 并将其放入HashMap,所以我得到了唯一用户列表,并在MyModel 更新后保存它。 (但相同的交易)。现在它将数据保存 3-4 秒。
但是,看起来ActiveAndroid 在MyModel 和User 表之间做了一些引用,所以当我试图从表中删除用户时出现异常:
FOREIGN KEY constraint failed
那么,我该如何处理呢?
【问题讨论】:
标签: android performance optimization database-design activeandroid