ActiveAndroid优化相关表
ActiveAndroid optimization relative tables
我有使用 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
table 之间做了一些引用,所以当我试图从 table 中删除用户时,我得到了一个异常:
FOREIGN KEY constraint failed
那么,我该如何处理呢?
由于过去 3 年不支持 ActiveAndroid
...我的解决方案是迁移到另一个 orm
。
反对 ActiveAndroid
的另一个理由 - is slower than others
我有使用 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
table 之间做了一些引用,所以当我试图从 table 中删除用户时,我得到了一个异常:
FOREIGN KEY constraint failed
那么,我该如何处理呢?
由于过去 3 年不支持 ActiveAndroid
...我的解决方案是迁移到另一个 orm
。
反对 ActiveAndroid
的另一个理由 - is slower than others