- JDK11
- IntelliJ IDEA Ultimate
- Lombok plugin + Enable annotation processing
- JPA Buddy plugin
- Docker
- Forked this repo
- Forked agile-practices-application repo
- Why Spring Core?
- Why Spring MVC?
- Why Spring Boot?
- How to configure the app?
- DataSource configuration
- Connection pool configuration
- Подключение к БД из IDEA
- Драйвер
- JDBC URL и параметры подключения
- База, каталог, схема
- Объекты схемы
- DDL vs DML
- Driver
- Connection
- Connection Pool
- Statement and PreparedStatement
- ResultSet
- Java to SQL types mapping
- Closing resources
- DB schema versioning with Spring Boot module
- TestContainers library with external DB
- CRUD @Repository and its common API
- @Autowired of dependent beans
- Key components
- DataSource
- JdbcTemplate
- RowMapper
- SimpleJdbcInsert
- NamedParameterJdbcTemplate
org.springframework.jdbc.object
package
-
Понятие транзакции в Spring
-
TX в JDBC
-
TX в JPA
-
TransactionManager
implementations -
Как управлять транзакциями в raw JDBC
-
Уровни изоляции транзакций для всех запросов через данное соединение
-
Архитектура системы и изоляция транзакций: batch c логикой в БД, batch с логикой в приложении, интерактивные
-
Управление изоляцией в самом SQL-запросе:
FOR UPDATE
/FOR SHARE
-
ThreadLocal
magic -
Why declarative transactions?
-
Non-atomic operations within Repository
-
Propagation policy
-
Rollback policy
-
Abstraction for different tx managers: managed jdbc connections, JPA, JTA, etc.
-
Управление авто-конфигурацией ORM в конфиге Spring Boot
-
Архитектура ORM: JPA & JPA Provider
-
Entity vs ValueObject/DTO
-
Persistence Context
-
Attaching and Detaching entities
-
EntityManager
-
Entity
-
OQL-запросы
-
Criteria API
-
Логическая конфигурация Entity
-
первичный ключ
-
ленивость полей
-
опасность возврата detached сущностей с lazy-связями
-
наследование
-
Физическая конфигурация Entity
-
Таблицы
-
Поля
-
Индексы
-
Validation API
-
Когда активируется валидация (спойлер: не единожды)
-
Кто валидирует
-
Как описать правила валидации
-
Caching API
-
ORM кешируют объекты по своей архитектуре
-
ORM так же могут кешировать Persistence Contexts с итоговыми тремя уровнями кеширования
- Принципиально иная реализация транзакций в ORM vs JDBC
- Optimistic vs Pessimistic стратегии
- Поле версии у сущностей
- Управление транзакциями в Spring Boot конфигурации
- Задачи автогенерации
- Декларация Spring Data Repository
- Что наследуем
- Как можем задать свои методы на соглашениях
- Как можем задать свои методы на OQL-запросе
- Генерация контроллеров