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 ➡ Яндекс.Дзен: