ORM (Object Relational Mapping, объектно-реляционное отображение) — это технология, которая позволяет работать с базами данных так, как если бы это были объекты из языков программирования.
Обычно с базами данных работают с помощью СУБД и языка запросов SQL. У него свои принципы, и они отличаются от привычной программистам объектно-ориентированной структуры. Чтобы работать с базой было удобнее, появилось ORM — как бы прослойка между базой данных и языками программирования. С ним можно сделать объект внутри программы и записать в базу или, наоборот, получить данные из базы и работать с ними как с объектом.
Для чего нужно ORM
ORM призвано решить задачу мэппинга данных — сопоставления между информацией из базы и сущностями из программирования. С его помощью можно:
- представить информацию из базы как объекты, с которыми может работать язык программирования;
- без ошибок сопоставить поля из базы данных и свойства полученных объектов друг с другом;
- избавиться от необходимости использовать SQL;
- создать интерфейс, который позволит выполнять задачи CRUD — к ним относятся создание, чтение, модификация и удаление данных из базы.
Без использования ORM работать с базами данных сложнее. Базы обычно реляционные, то есть состоят из связанных друг с другом таблиц. Но такое представление сложно перенести в язык программирования и работать с ним: языки работают не с таблицами, а с классами и объектами. Приходится постоянно переводить информацию из базы в «понятный» для языков программирования вид и наоборот. Это неудобно и порой неэффективно.
ORM помогает обойтись без ручных трансформаций данных, снимает нагрузку с разработчика и позволяет вообще не использовать SQL, а вести работу с базами через привычные языки программирования.
Как это работает
Поговорим о том, что такое ORM изнутри. Если разработчик не пользуется этой технологией, он работает с базой непосредственно с помощью SQL или переводит данные из базы в «объектный» вид вручную.
ORM преобразует данные самостоятельно. Разработчик пишет запрос на выбранном языке программирования, ORM сопоставляет свойства объекта и поля базы — и формирует запрос на SQL. В итоге разработчику вообще не нужно писать SQL-запрос и переводить данные, потому что ORM делает это всё за него.
Фактически ORM — это тот же самый «перевод» данных из одного вида в другой. Просто автоматизированный и снимающий с программиста лишнюю нагрузку.
Как реализуют ORM на практике
Чтобы реализовать эту технологию, разработчики создают и поддерживают специальные библиотеки и фреймворки для языков программирования. Если кто-то хочет внедрить у себя ORM, он устанавливает нужный фреймворк и дальше работает с ним. Реализации бывают как свободные, принадлежащие сообществу, так и проприетарные — у них есть четко определенный владелец и условия использования.
Вот несколько примеров реализаций ORM:
- SQLAlchemy — библиотека для языка Python с открытым исходным кодом;
- Django-ORM — компонент фреймворка Django для веб-разработки на Python;
- Hibernate — одна из наиболее известных ORM-библиотек для Java;
- Eloquent — реализация ORM из фреймворка Laravel для PHP;
- Sequelize — ORM для Node.js, фреймворка JavaScript для серверного программирования.
Преимущества использования ORM
Возможность писать на любом языке. Частый язык для работы с ORM — Python. На нём же написаны многие ORM-библиотеки. Но технически можно применять и другие языки — такие, которые удобны конкретному разработчику или используются в проекте. Не нужно постоянно «переключаться» между SQL и более привычными языками. Можно просто писать запросы с ORM.
Ускорение разработки. Разработчику не приходится писать много лишнего кода для перевода записей базы данных в сущности, понятные языку программирования, — и наоборот. Мэппинг, то есть сопоставление, происходит за счет ORM.
Независимость от СУБД. Идея ORM — чтобы разработчику вообще не приходилось думать о базе и системе управления, он мог просто брать данные и работать с ними. Кроме того, ORM обычно поддерживает разные СУБД: MySQL, SQLite, PostgreSQL и так далее. Поэтому переходить с одной СУБД на другую довольно легко — выбранное ORM-решение может поддерживать обе системы.
Широкие возможности. ORM реализует большинство функций, нужных разработчику при взаимодействии с базой. Кроме стандартных CRUD-задач, ORM поддерживает транзакции, миграции и другие полезные возможности.
Недостатки ORM
Сложная первоначальная настройка. Чаще всего недостаточно просто скачать ORM-фреймворк, чтобы он работал «из коробки». Его нужно подключить и настроить, а это дополнительная работа, время и возможные сложности.
Неэффективность в некоторых ситуациях. Иногда писать SQL-запросы вручную оказывается эффективнее: они срабатывают быстрее и используют меньше ресурсов компьютера. Это не всегда критично — порой скорость работы программиста важнее. Но эту особенность нужно учитывать, если для программы важна эффективность.
Меньшая прозрачность. При работе с ORM у разработчика меньше понимания, что происходит в базе на самом деле. Если он до этого не имел дела с SQL и базами данных, то в нештатной ситуации может просто запутаться из-за непонимания, как что работает. Поэтому рекомендуется всё же изучать теорию работы с базами, чтобы иметь представление, что происходит «внутри».
Как начать работать с ORM
Чтобы изучать ORM-фреймворки, нужно иметь представление, как работает объектно-ориентированное программирование, что такое база данных и как она связывается с программой. Переходить к этой теме стоит уже после того, как вы разберетесь в основных понятиях. Технологию обычно используют в профессиональной разработке — в учебниках по информатике вряд ли можно найти ее упоминания.
При изучении можно пользоваться:
- гайдами для разработчиков по внедрению и работе с ORM;
- официальной документацией выбранных фреймворков или библиотек;
- курсами и обучающими материалами.
Что касается самой установки и настройки ORM — подробные инструкции обычно есть на официальных страницах того или иного фреймворка. А синтаксис ORM-запросов зависит от выбранного языка и библиотеки.
0 комментариев