ВІДЕОУРОК № 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 та діалогових вікон підтвердження.