N+1 и дефолтные методы. Spring Boot + Webix

Spring Boot MVC и Webix: решаем проблему N+1 через EntityGraph, настраиваем логгирование SQL и используем дефолтные методы в интерфейсах Java. Поддержать проект: ➡ Стать спонсором https://www.youtube.com/letscodedru/join
➡ Patreon   / letscodedru   ➡ Яндекс.Деньги
➡ PayPal
➡ Qiwi
В прошлых видео мы реализовали списки и их редактирование через диалоговые окна. Но при этом остался недоделанный момент: автомобили у на отображаются только по модели и угадать марку текущего автомобиля не очень просто, глядя на него в списке. Для решения этой проблемы мы используем дефолтную (default) реализацию методов в интерфейсах Java. Дефолтный метод позволяет добавить поведение, не требующее реализации у каждого из потомков, при этом не требующее дополнительного обслуживания и не создающее лишних зависимостей. Далее мы сталкиваемся с проблемой N+1. Проблема эта выражается в том, что когда мы запрашиваем список сущностей, имеющих связи с другими сущностями, мы порождаем паразитные запросы. На каждый запрос списка основных сущностей мы получаем дополнительно столько запросов, сколько записей было получено в списке основной сущности. Данную проблему мы решаем с помощью известных нам EntityGraph. Для того, чтобы проверить, что мы исключаем паразитные запросы, нам необходимо выводить SQL запросы в лог приложения. Spring поддерживает 2 переменных, для вывода запросов в лог приложения и для простого форматирования этих самых запросов: spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true Код из видео:
Документация по Spring Data Entity Graph:
Видео по приложению Сарафан, где используются сложные EntityGraph:    • Комментарии с JPA Entity Graph. Sprin...   Видео по приложению Сарафан, где настраивается JsonView:    • Подключаем базу данных, настраиваем J...   Еще про Сарафан и JsonView:    • Сериализуем с JsonView при отправке ч...   ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Второй канал:    / geekchatdru   ➡ Twitch:   / drucoder   ➡ Твиттер:   / letscodedru   ➡ Группа Вконтакте: https://vk.com/letscodedru
➡ Канал в Telegram:
➡ Чат в Telegram:
➡ Сервер в Discord:   / discord   ➡ Яндекс.Дзен:

Смотрите также