Я пытаюсь оптимизировать старую кодовую базу. В настоящее время мы используем @ElementCollection
ArrayList для хранения сотен идентификаторов (Long).
public class RightEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
private List<Long> entityList = new ArrayList<Long>();
}
Проблема в том, что для извлечения entityList
из базы данных может потребоваться несколько секунд.
Я читал, что @ElementCollection
трудно правильно оптимизировать , а не подходит для частых модификаций . Учитывая это, я утверждал, что ассоциация @OneToMany
не представляет сложности для моего случая, но это не потому, что реальное узкое место в получении списка.
Таким образом, ассоциация @OneToMany
быстрее получается, чем @ElementCollection
?
Примечание : При условии, что мы правильно оптимизировали @OneToMany
ассоциацию
Примечание 2 : Я знаю, что я с нетерпением беру список. Я все еще не могу обернуть мою голову так, как вы должны правильно ее получить.
Редактировать : Я рассчитал необходимое время для каждого запроса выполняется список @ElementCollection
. Чего я не понимаю, так это того, что некоторые запросы, в которых возвращено всего 3 элемента (см. Id: 189), имеют больше времени (намного больше), чем некоторые, кроме возврата сотен элементов. Это потому что база данных не упорядочена? Хотя это не похоже на запрос SQL на PgAdmin.