4.10. Основные принципы ORM
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Основные принципы ORM
Маппинг сущностей (классов) на таблицы
★ Маппинг – это процесс связывания объектов программы с таблицами в базе данных. Сам по себе маппинг происходит от слова map - карта, когда берётся одна сущность, и данные из неё преобразуются в другую.
★ Класс - таблица. Каждый класс в программе соответствует таблице в базе данных. Имя класса обычно совпадает с именем таблицы, а свойства класса (атрибуты) соответствуют столбцам таблицы.
★ Объект - строка. Экземпляр класса (объект) представляет собой строку в таблице. Значения свойств объекта сохраняются в ячейках строки. В современных ORM часто используются аннотации или декораторы для указания дополнительных параметров маппинга - первичный ключ (id), индексы и ограничения (например, NOT NULL).
CRUD-операции через объекты
ORM предоставляет методы для выполнения стандартных операций с данными (CRUD), которые автоматически преобразуются в SQL-запросы. Создание нового объекта в программе приводит к добавлению строки в таблицу.
Чтение данных из базы происходит через запросы к объектам.
Изменение свойств объекта приводит к обновлению соответствующей строки в таблице.
Удаление объекта из программы приводит к удалению строки из таблицы.
Работа с отношениями (один-к-одному, один-ко-многим, многие-ко-многим)
ORM позволяет работать с отношениями между таблицами через связи между объектами.
Типы отношений:
- Один-к-одному (One-to-One) - одна запись в таблице связана с одной записью в другой таблице.
- Один-ко-многим (One-to-Many) - одна запись в таблице связана с несколькими записями в другой таблице.
- Многие-ко-многим (Many-to-Many) - несколько записей в одной таблице связаны с несколькими записями в другой таблице.
ORM автоматически создаёт промежуточные таблицы для отношений «многие-ко-многим» и управляет внешними ключами для «один-ко-многим».
Транзакции и управление состоянием объектов
Транзакция – это набор операций, которые должны быть выполнены как единое целое. Если хотя бы одна операция завершается с ошибкой, все изменения откатываются.
ORM предоставляет инструменты для управления транзакциями, отслеживая состоянием объектов, чтобы определить, какие изменения нужно применить к базе данных:
- Transient (временный) - объект создан, но ещё не связан с БД;
- Persistent (постоянный) - объект сохранён в БД;
- Detached (отсоединённый) - объект был сохранён, но больше не связан с текущей сессией;
- Deleted (удалённый) - объект удалён из БД.