Hibernate: быстрее ли получается поиск ассоциации @OneToMany, чем получение списка @ElementCollection? - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь оптимизировать старую кодовую базу. В настоящее время мы используем @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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...