我正在使用Room实施缓存,并且遇到了几个问题:
1。实体是否应该与pojo相同?我将它们分开...这里的问题是,我认为我一直使用Pojo,而在Repository中一直都是Entity。我通过将Pojo转换为Entity并在应用程序的其他地方使用实体解决了此问题(ViewModel-> View-> Adapter-> ViewHolder) 请参见下面的存储库代码:
public List<com.example.newsapp.model.db.Photo> pojoToEntity(List<Photo> list){
List<com.example.newsapp.model.db.Photo> photos = new ArrayList<>();
for(Photo photo : list){
com.example.newsapp.model.db.Photo minimizedPhoto = new com.example.newsapp.model.db.Photo();
minimizedPhoto.setAlbumId(photo.getAlbumId().toString());
minimizedPhoto.setTitle(photo.getTitle());
minimizedPhoto.setImageURL(photo.getThumbnailUrl());
photos.add(minimizedPhoto);
}
return photos;
}
这可以接受吗?最佳做法是什么?我已经看到了Room的许多示例,但是没有一个谈论这个问题,他们只是将@Entity放在类中,仅此而已。如果应用程序一直使用POJO,那么POJO怎么使用实体类呢?
如何将列表插入数据库?我们逐个对象地做那个吗?假设在Dao中具有此功能
void insertAll(Photo... photos);
如何实现此目的并能够插入列表:
void insertAll(LiveData<List<Photo>> photos);
来自存储库的调用如下:
public void insert (List<com.example.newsapp.model.db.Photo> photos) {
new insertAsyncTask(mArticleDao).execute((com.example.newsapp.model.db.Photo[]) photos.toArray());
}
我也对此解决方案感到好奇,因此希望听到反馈/建议