Я столкнулся с несколькими узкими местами в использовании моей базы данных. Я использую PostgreSQL доступ к Hibernate ORM и написан на Java 8.
Вот пример класса, который нуждается в оптимизации:
public class RightEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
private List<Long> readableEntity = new ArrayList<Long>();
}
RightEntity - это объект, который позволяет доступ к списку идентификаторов (List of Long). Проблема заключается в том, что всякий раз, когда я загружаю эту сущность, список readableEntity, который содержит сотни элементов, может загружаться несколько секунд одновременно. Это огромное узкое место, потому что оно используется почти во всех API и менеджерах моего сервера.
Мой вопрос: как мне оптимизировать этот код, чтобы он работал более плавно?
LazyCollectionOption.FALSE похож на FetchType.Eager Я пытался загрузить его лениво, он работает намного быстрее, но я получаю LazyCollection всякий раз, когда я пытаюсь загрузить список, поэтому я изучаю альтернативы или исправление.
Спасибо!