ВИДЕОУРОК №6. Исключения при доступе к данным и тестировании
На этом уроке предоставляется обзор курса. Рассматриваются основные типы баз данных, которые существуют и используются в разработке корпоративных приложений. Больше внимания уделяется реляционным СУБД работающих в архитектуре "Клиент-сервер" и поддерживаемых Spring Data. Главное внимание уделяется одной из самых распространенных СУБД - MySQL. Далее, рассматриваются уровни абстракции при доступе к данным и краткая историческая справка их появления и обретения популярности. Рассматривается взаимная связь механизмов доступа к данным. Проводится описание приложения "Записная книжка", которое будет разрабатываться на протяжении курса, и в режиме лайв-кодинга создаётся база данных для неё, что на первом этапе содержит одну таблицу и в дальнейших уроках будет расширена для хранения всех данных приложения.
На данном уроке происходит сравнительный анализ клиент-серверных СУБД, из которого ученики получат информацию о СУБД H2, которую удобно использовать для тестирования приложений из-за возможности ее работы в embedded mode и клиент-серверных СУБД PostreSQL и MySQL. Рассматриваются составные части таблиц в базе данных, понятие ключевых и неключевых полей и механизмы образования связей между таблицами путем использования внешних ключей. Рассматриваются ограничения на операции с данными в таблицах на основе внешних ключей. В режиме лайв-кодинга создаются связанные таблицы на сервере MySQL в среде IntelliJ IDEA.
В этом уроке главное внимание уделяется начальным шагам создания Spring Boot приложения. Рассматривается два варианта создания структуры проекта с помощью Spring Initializer: на странице https://start.spring.io и с помощью wizard в IntelliJ IDEA. Уделяется внимание настройке зависимостей и конфигурированию приложения. Рассматриваются файлы настроек приложения application.properties и application.yml - их структура и необходимые параметры настроек для приложения с использованием Spring Data. После этого, в режиме лайв-кодинга разрабатывается консольное приложение Spring Data, реализующее отображение тестовых данных, которые предварительно были загружены в таблицу базы данных "Записная книжка" на сервере MySQL.
Этот урок посвящен основам разработки web-приложений с использованием Spring Boot и шаблонизатора Thymeleaf. Рассматриваются зависимости, которые следует подключить при создании приложения (Spring Web, Thymeleaf, Lombok...). Проводится анализ структуры web-приложения в среде IntelliJ IDEA. Рассматриваются основные компоненты web-приложения в соответствии со стереотипами Controller, Service, Component. Особый акцент делается на понимании того, как web-приложение обрабатывает различные типы HTTP-запросов (GET, POST, PUT, DELETE...) с помощью аннотаций в классе контроллера. Рассматриваются основные теги для формирования web-элементов с использованием Thymeleaf. В режиме лайв-кодинга создается структура и основные компоненты: котроллеры, сервисы и страницы приложения.
Этот урок посвящен подключению Spring Data к web-приложению. Рассматривается использование основных типов Repository для взаимодействия с БД. Ученики овладеют знаниями о порядке создания методов контроллеров и сервисов для реализации CRUD-операций с таблицами в БД. Особое внимание уделяется вопросам настроек аннотаций в классах сущностей, описывающих связи между таблицами. Рассматривается проблема "N+1" при работе с БД с помощью JPA и пути её преодоления или минимизации её влияния. В режиме лайв-кодинга реализуются CRUD операции с таблицами БД.
В этом уроке главное внимание уделяется исключительным ситуациям (Exceptions), которые могут возникать при работе с Spring Data и тестированию приложений с использованием JUnit 5. Обосновывается создание собственных исключений для улучшения надежности, читабельности и управляемости кода в процессе обработки ошибок. Разбираются механизмы и библиотеки модульного тестирования приложений и различные типы тестов (тесты на равенство, неравенство, соответствие, параметризованные тесты). В режиме лайв-кодинга разрабатываются тесты для основных методов приложения.
Этот урок ставит целью рассмотреть основные возможности языков SQL и JPQL для создания запросов к БД. Во время урока ученики будут изучать структуру запросов, как в традиционном языке SQL (Native Queries) так и в языке JPQL. На уроке будут рассмотрены примеры запросов и подключения их в репозитории. Основной "изюминкой" урока является использование плагина JPA Buddy, который входит в состав IntelliJ IDEA для автоматизации создания запросов и подключения их как аннотаций к соответствующим методам репозиториев. В режиме лайв-кодинга создаются и тестируются методы запросов для приложения "Записная книжка"
Данный урок углубляет знания учеников о создании запросов к базе данных с использованием методов репозиториев. Важное место занимает рассмотрение методов, возвращающих один объект, в том числе возвращающих Optional - контейнер, который может содержать объект сущности, или является пустым. Такие объекты являются лучшей альтернативой возвращению null-значений. Рассматривается концепция проекций таблиц базы данных и аннотации создания вычисляемых полей. Также рассматриваются методы, которые возвращают коллекции, или стримы. Ученики ознакомятся с возможностями сортировки и разбиения на страницы данных, получаемых из БД. В режиме лайв-кодинга на уроке будут рассмотрены примеры запросов на основе имен методов и подключения их в репозитории.
На данном уроке рассматривается понятие транзакции и использование их при реализации приложений Spring Data. Уделяется внимание корректному использованию аннотации @Transactional в компонентах приложений Spring. Рассматривается настройка каскадирования операций с таблицами БД. Реализуются связи и взаимодействие таблиц, которые образуют отношения Many-To-Many. В режиме лайв-кодинга реализуется взаимодействие со связанными таблицами БД и каскадирование изменений.
Урок посвящен оформлению приложения. Для стилизации web-страниц приложения и реализации подтверждения операции с базой данных рассматривается использование библиотеки Bootstrap. Рассматриваются простые шаблоны всплывающих диалоговых окон для подтверждения операций удаления и обновления данных в таблицах БД. В режиме лайв-кодинга выполняется оформление приложения с использованием стилизации Bootstrap и диалоговых окон подтверждения.