Курс по Hibernate поможет вам уверенно перейти от ручного маппинга данных к использованию мощного ORM‑фреймворка, автоматизируя рутинные операции и упрощая работу с реляционными базами данных. Этот курс создан для тех, кто уже знаком с JDBC и хочет вывести свои навыки backend-разработки на новый профессиональный уровень.
Что вы изучите на курсе
Обучение охватывает все ключевые аспекты Hibernate, позволяя понять не только практическое применение, но и внутренние механизмы работы фреймворка.
Основы ORM и связь с JPA
Вы разберетесь, что такое ORM, зачем нужна спецификация JPA и как Hibernate ее реализует. Это поможет сформировать правильное понимание архитектуры современного Java-приложения.
Маппинг сущностей и работа с аннотациями
Курс подробно рассматривает основные типы маппинга:
- маппинг простых полей;
- маппинг коллекций;
- установление реляционных связей через аннотации OneToOne, OneToMany, ManyToMany и другие.
SessionFactory, Session и жизненный цикл сущностей
Вы сравните аналогии между Hibernate и JDBC, узнаете, как работает создание и управление сессиями, и почему PersistenceContext является ключевым элементом всего фреймворка.
Состояния сущностей
Отдельное внимание будет уделено состояниям объектов: transient, persistent, detached и removed — вы научитесь правильно управлять ими в реальных проектах.
Работа с транзакциями и CRUD‑операциями
Курс демонстрирует, как Hibernate автоматизирует выполнение CRUD‑операций и какие подходы стоит применять для повышения стабильности и читаемости кода.
DAO vs Repository
Мы разберем два популярных архитектурных подхода:
- DAO — работа непосредственно с данными;
- Repository — более абстрактный уровень, ориентированный на доменную модель.
Вы поймёте, как выбрать оптимальный вариант для своих задач.
Продвинутые возможности Hibernate
Кеширование первого и второго уровня
Вы научитесь применять кеши Hibernate для оптимизации запросов и уменьшения нагрузки на базу данных.
Решение проблемы N+1
Отдельный модуль курса посвящен устранению одной из самых распространенных проблем ORM-фреймворков — N+1 queries. Вы узнаете, когда ее можно прогнозировать и как предотвращать.
Практика и разбор исходного кода
На каждом занятии вы будете заглядывать внутрь исходников Hibernate, что позволит глубже понять принципы его работы и осознанно применять фреймворк на практике.
Какие навыки вы приобретёте
- Работа с ORM и понимание JPA;
- Грамотный маппинг сущностей и связей;
- Оптимизация запросов и кеширование;
- Подходы к проектированию DAO и Repository;
- Умение работать с транзакциями в Hibernate;
- Решение типичных ORM‑проблем, включая N+1.
В результате вы сможете создавать профессиональные, оптимизированные и поддерживаемые backend‑приложения на Java с использованием Hibernate.
create
CREATE TABLE payment (
id BIGSERIAL PRIMARY KEY,
amount INT,
receiver_id BIGINT REFERENCES users (id)
);
id BIGSERIAL PRIMARY KEY,
DROP TABLE users;
CREATE TABLE company (
id SERIAL PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE
);
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(128) UNIQUE,
firstname VARCHAR(128),
lastname VARCHAR(128),
birth_date DATE,
role VARCHAR(128),
company_id INT REFERENCES company (id)
);
User user = User.builder()
.username("johndoe@example.com")
.firstname("john")
.lastname("doe")
.birth_date(LocalDate.of(2000, 01, 21))
.age(23)
.build();
session.persist(user);
username varchar(128) primary key,
firstname varchar(128),
lastname varchar(128),
birth_date date,
age int
);
решение у него в гитхабе
https://github.com/dmdev2020/hibernate-starter/issues/3
я опубликовал бы здесь, но тут, не позволяет редактор нормально постить сообщения и добавлять картинку :(