N+1 и дефолтные методы. Spring Boot + Webix
Spring Boot MVC и Webix: решаем проблему N+1 через EntityGraph, настраиваем логгирование SQL и используем дефолтные методы в интерфейсах Java. Поддержать проект: ➡ Стать спонсором https://www.youtube.com/letscodedru/join
➡ Patreon / letscodedru ➡ Яндекс.Деньги https://money.yandex.ru/to/4100145167...
➡ PayPal https://paypal.me/letscodedru
➡ Qiwi https://qiwi.me/letscode
В прошлых видео мы реализовали списки и их редактирование через диалоговые окна. Но при этом остался недоделанный момент: автомобили у на отображаются только по модели и угадать марку текущего автомобиля не очень просто, глядя на него в списке. Для решения этой проблемы мы используем дефолтную (default) реализацию методов в интерфейсах Java. Дефолтный метод позволяет добавить поведение, не требующее реализации у каждого из потомков, при этом не требующее дополнительного обслуживания и не создающее лишних зависимостей. Далее мы сталкиваемся с проблемой N+1. Проблема эта выражается в том, что когда мы запрашиваем список сущностей, имеющих связи с другими сущностями, мы порождаем паразитные запросы. На каждый запрос списка основных сущностей мы получаем дополнительно столько запросов, сколько записей было получено в списке основной сущности. Данную проблему мы решаем с помощью известных нам EntityGraph. Для того, чтобы проверить, что мы исключаем паразитные запросы, нам необходимо выводить SQL запросы в лог приложения. Spring поддерживает 2 переменных, для вывода запросов в лог приложения и для простого форматирования этих самых запросов: spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true Код из видео: https://github.com/drucoder/logistic/...
Документация по Spring Data Entity Graph: https://docs.spring.io/spring-data/jp...
Видео по приложению Сарафан, где используются сложные EntityGraph: • Комментарии с JPA Entity Graph. Spring Boo... Видео по приложению Сарафан, где настраивается JsonView: • Подключаем базу данных, настраиваем Jackso... Еще про Сарафан и JsonView: • Сериализуем с JsonView при отправке через ... ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Второй канал: / geekchatdru ➡ Twitch: / drucoder ➡ Твиттер: / letscodedru ➡ Группа Вконтакте: https://vk.com/letscodedru
➡ Канал в Telegram: https://t.me/letsCode_dru
➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqh...
➡ Сервер в Discord: / discord ➡ Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac209...