У меня огромный список объектов, каждый из которых содержит количество изображений.Я хочу использовать ленивую загрузку, чтобы получить их частично.И я хочу понять, как использовать LazyDataModel и как он работает.
Сначала я подумал, что мне нужно сохранить только идентификаторы потенциально извлеченных объектов внутри LazyDataModel .И при вызове метода load () - мне нужно извлечь изображения из БД и заменить источник данных извлеченными данными.Поэтому каждый раз, когда я хочу загрузить больше данных, я запускаю запрос.
private List<MyEntity> datasource; // contains only ids of MyEntity
@Override
public List<MyEntity> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
//rowCount
int dataSize = datasource.size();
this.setRowCount(dataSize);
//get listOfIdToFetch
//paginate
datasource = datasource.addAll(myJpaRepository.findByIds(listOfIdToFetch));
return datasource;
}
Я не мог заставить его работать, потому что Primefaces использовал метод lock () и генерировал исключение, когда новая часть данных должна была быть загружена:
org.* полный список данных, сохраненных в источник данных , включая все изображения ), может быть правильным способом использования.Поскольку изначально я думал, что это упрощенный фиктивный пример, и в реальном проекте я буду использовать sql-запросы для выборки изображений по частям.
private List<MyEntity> datasource; // contains all images of all records
@Override
public List<MyEntity> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
//rowCount
int dataSize = datasource.size();
this.setRowCount(dataSize);
//paginate
return datasource.subList(first, first + pageSize);
}
Я хочу понять, как работает LazyDataModel и повышает производительность.Если правильный способ использования этого подхода - извлечь все данные из БД и сохранить их в источник данных .Сохраняет ли Primefaces эти данные на сервере и сбрасывает их по частям? Что, если результат sql содержит тысячи изображений , стоит ли искать другой подход и устанавливать лимит извлекаемых записей?Как добиться лучшего увеличения производительности при отложенной загрузке?Или, возможно, первоначальный подход правильный, и я должен выяснить, почему возникает эта ошибка?