У меня есть база данных с довольно большой моделью сущностей.
Всего 14 таблиц, в среднем около 100 000 записей.
Когда я протестировал свое приложение, которое берет одну сущность из базы данных, преобразует ее в json и возвращает ее вызывающей стороне, получение записи заняло 7 секунд.
Это не похоже на проблему инициализации, потому что, если я делаю один и тот же вызов два раза подряд, они оба получают около 10 секунд для получения данных.
Когда я включаю ведение журнала сценария sql, я обнаруживаю, что для каждого прочитанного объекта hibernate отправляет сотни запросов sql в базу данных.
(Фактическое число зависит от количества подключений / лицензий / продуктов / услуг и т. Д., Которые есть у организации, но для моей тестовой записи я получил 286 запросов (что в общей сложности заняло около 7 секунд))
Когда база данных пуста (за исключением данных, которые должен вернуть тест), это занимает около 6 секунд.
Полагаю, проблема в том, что для моих @ OneToMany's и @ ManyToMany выборки установлены на Lazy, но когда я устанавливаю их в eager, я получаю ошибку нескольких пакетов для извлечения.
@javax.persistence.OneToMany(fetch = javax.persistence.FetchType.LAZY)
@org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.FALSE)
@javax.persistence.JoinColumn(name = "ProductId")
Это пример имеющегося у меня отношения OneToMany, которое имитирует активную выборку без ошибки в нескольких пакетах.
Это общая проблема?
И как мне улучшить скорость чтения?