Было высказано предположение, что для повышения производительности нашей системы следует использовать ленивую загрузку по всем направлениям. То есть изменить отображение OneToOne со свойством «mappedBy» на отображение @OneToMany. Это необходимо для устранения и остановки загрузки нежелательных данных из базы данных, что приводит к замедлению работы приложений.
Мы используем многоуровневую систему (в основном, 2 уровня). У нас есть внешний интерфейс - использующий JSF и внутренний, который содержит уровни доступа к бизнесу и базе данных. Передняя и задняя сторона отображают представление EJB - но в EJB нет реальной логики. Другие используемые технологии - Spring и Hibernate
Теперь, после некоторого прочтения этой темы, кажется, что использование отложенной загрузки не является «серебряной пулей» в том смысле, что ее нужно применять правильно. Для каждой отложенной загрузки выдается оператор Select для извлечения данных. Существует также проблема, заключающаяся в том, что, если внешний интерфейс делает доступ к свойству, которое должно быть отложено, и сеанс / соединение закрывается на внутреннем конце, то мы получим нулевое значение.
Является ли вышеприведенное правильным вопросом?
Итак, каков наилучший подход / практика для реализации решения для отложенной загрузки или улучшения производительности? Надежда не переделывать модель данных, если это вообще возможно.
Сначала я работал с группой администраторов баз данных, чтобы получить представление о том, что происходит между двумя системами - как выглядят запросы, как мы используем данные и т. Д. Определите проблемные места, изучите объект / запросы Hibernate. чтобы увидеть, как лучше его улучшить. Также посмотрите на внешний интерфейс, чтобы определить, что и как данные передаются от задней части к передней для отображения и т. Д.
Хороший подход / другие подходы?