Фаза 3 – Сохранение данных и потоки (2–3 месяца)
Основы SQL
- DDL:
CREATE
,ALTER
. - DML:
SELECT
,INSERT
,UPDATE
,DELETE
. - Joins:
INNER
,LEFT
,RIGHT
. - Keys: первичные и внешние ключи.
- Нормализация: 1NF, 2NF, 3NF.
- Пример: создание таблиц для продуктов и категорий.
JDBC и пул соединений
- Классы:
Connection
,Statement
,PreparedStatement
,ResultSet
. - Использование пула соединений (HikariCP).
- Лучшие практики:
try-with-resources
, обработкаSQLException
.
Hibernate + JPA на практике
- Аннотации:
@Entity
,@Id
,@ManyToOne
,@OneToMany
. - Конфигурация:
persistence.xml
илиapplication.properties
. - CRUD-операции с
EntityManager
. - Введение в миграции баз данных с Flyway или Liquibase.
Введение в NoSQL базы данных
- Концепции: документы, коллекции, горизонтальная масштабируемость.
- MongoDB: настройка, CRUD-операции с MongoRepository.
- Spring Data MongoDB: интеграция с Spring Boot.
- Пример: хранение логов активности системы для продуктов в MongoDB.
Потоки и лямбда-выражения
- Операции:
filter
,map
,sorted
,collect
,forEach
,reduce
. - Пример: фильтрация продуктов по цене, сортировка по названию.
Optional и функциональные интерфейсы
Optional
:orElse
,ifPresent
,orElseThrow
.- Функциональные интерфейсы:
Function
,Predicate
,Consumer
. - Пример: использование
Predicate
в Streams для фильтрации данных.
Продвинутые коллекции
- LinkedList: эффективная вставка/удаление.
- TreeMap: упорядоченные пары ключ-значение.
- PriorityQueue: очередь с приоритетом.
- LinkedHashMap и Deque (введение).
Логирование (SLF4J/Logback)
- Конфигурация SLF4J с Logback.
- Уровни:
INFO
,DEBUG
,ERROR
. - Пример: логирование запросов Hibernate.
Концепции транзакций (ACID)
- Атомарность, согласованность, изолированность, долговечность.
- Транзакции с JDBC (
commit
,rollback
) и Hibernate (@Transactional
).
Индексы и планы выполнения
- Индексы: первичные, уникальные, составные.
- Использование EXPLAIN для оптимизации запросов.
- Пример: создание индекса для часто запрашиваемого столбца.
Работа с файлами (опционально)
- Чтение и запись с помощью
Files
,BufferedReader
. - Пример: экспорт отчета о продуктах в CSV с использованием Streams.
Тестирование баз данных (введение)
- Интеграционные тесты с H2 и JUnit.
- Пример: тестирование CRUD-операций с Hibernate.
Финальный проект
Система управления продуктами
- База данных: таблицы Product и Category (отношение 1:N).
- Java: классы с JPA (Product
, Category
), CRUD с Hibernate.
- Опционально: хранение логов изменений продуктов в MongoDB.
- Опционально: хранение динамических атрибутов продуктов (например, технических характеристик) в MongoDB.
- Streams: фильтрация/сортировка продуктов (например, по цене или категории).
- Логирование: мониторинг операций с базой данных.
- Git: коммит для каждой функции (например, feature/crud
, feature/streams
).
- Публикация на GitHub с поясняющим README.