Объектно-реляционное отображение (ORM - Object Relational Mapping) – это метод, который используется для создания «моста» между объектно-ориентированными программами и, как правило, реляционными базами данных.
Иначе говоря, ORM можно рассматривать как слой, который соединяет объектно-ориентированное программирование (ООП) с реляционными базами данных.
Когда вы взаимодействуете с базой данных с помощью языков ООП, то вы выполняете различные операции, такие как создание (creating), чтение (reading), обновление (updating) и удаление (deleting) (CRUD) данных. По умолчанию для выполнения этих операций в реляционной базе данных вы используете SQL.
Хоть использование SQL для данной цели не считается плохим вариантом, но ORM и его инструменты все же могут помочь упростить взаимодействие между реляционными базами данных и различными языками ООП.
Что такое инструмент объектно-реляционного отображения?
Инструмент объектно-ориентированного отображения (ORM) – это программное обеспечение, которое было разработано для того, чтобы помогать разработчикам ООП взаимодействовать с реляционными базами данных. В связи с этим, вместо того, чтобы создавать свое собственное программное обеспечение, вы можете воспользоваться этими готовыми инструментами.
Ниже приведен фрагмент кода, написанный на SQL, с помощью которого можно извлечь информацию о конкретном пользователе из базы данных:
"SELECT id, name, email, country, phone_number FROM users WHERE id = 20"
Приведенный выше программный код возвращает определенную информацию о пользователе – name (имя), email (электронную почту), country (страну проживания), phone_number (номер телефона) – из таблицы под названием users (пользователи). Мы использовали оператор WHERE и, тем самым, указали, что нам необходима информация о пользователе, id (идентификационный номер) которого равен 20.
При этом, с помощью инструмента ORM можно выполнить аналогичный запрос, и здесь подход будет более простой:
users.GetById(20)
Итак, приведенный выше код выполняет ту же функцию, что и SQL-запрос. Имейте в виду, что каждый инструмент ORM построен по-разному, поэтому и методы у них разные, но их назначение одно и то же.
Инструменты ORM могут вызывать методы, подобные тому, который мы использовали в последнем примере.
Большая часть языков ООП имеют огромное количество инструментов ORM. Вы можете выбрать тот, что вам больше понравится. Ниже приведен список некоторых популярных инструментов для разработки на Java, Python, PHP и .NET:
Популярные инструменты ORM для разработки на Java:
- Hibernate
Hibernate позволяет разработчикам создавать классы постоянного хранения согласно концепциям ООП, таким как наследование, полиморфизм, ассоциация и композиция. Этот инструмент является высокопроизводительным и масштабируемым.
- Apache OpenJPA
Apache OpenJPA также является инструментом Java для поддержки постоянного хранения данных. Его можно использовать в качестве самостоятельного уровня поддержки постоянного хранения данных простого объекта языка Java.
- EclipseLink
EclipseLink – это общедоступное технологическое решение Java для поддержки постоянного хранения данных для реляционных данных, XML-элементов и веб-служб баз данных.
- jOOQ
jOOQ создает Java-код на основе данных, которые хранятся в базе данных. Этот инструмент можно использовать для написания безопасных SQL-запросов.
- Oracle TopLink
Инструмент Oracle TopLink можно использовать для создания высокопроизводительных приложений, которые хранят данные постоянного хранения. Данные могут быть преобразованы в реляционные данные или в XML-элементы.
Популярные инструменты ORM для разработки на Python:
- Django
Django – это замечательный инструмент для быстрой разработки веб-приложений.
- web2py
web2py – это полномасштабная среда Python с открытым исходным кодом. Она используется для разработки быстрых, масштабируемых, безопасных веб-приложений с управлением данными.
- SQLObject
SQLObject – это объектно-реляционная программа управления, которая предоставляет интерфейс объекта для вашей базы данных.
- SQLAlchemy
SQLAlchemy предоставляет шаблоны постоянного хранения данных, которые необходимы для эффективного и высокопроизводительного доступа к базе данных.
Популярные инструменты ORM для разработки на PHP:
- Laravel
Laravel идет совместно с объектно-реляционной программной управления, известной как Eloquent, которая упрощает взаимодействие с базами данных.
- CakePHP
CakePHP предусматривает два типа объектов: репозитории, которые дают вам доступ к набору данных, и сущности, которые представляют собой отдельные записи данных.
- Qcodo
Qcodo предоставляет различные команды для взаимодействия с базами данных, которые можно запускать в терминале.
- RedBeanPHP
RedBeanPHP – это средство объектно-реляционного отображения без настройки.
Популярные инструменты ORM для разработки на .NET:
- Entity Framework
Entity Framework – это модуль сопоставления объектной базы данных с несколькими базами данных. Этот инструмент поддерживает SQL, SQLite, MySQL, PostgreSQL и Azure Cosmos DB.
- NHibernate
NHibernate – это средство объектно-реляционного отображения с открытым исходным кодом. У него есть огромное количество подключаемых модулей и инструментов, которые упрощают и ускоряют процесс разработки.
- Dapper
Dapper – это микро-ORM. Преимущественно его используют для сопоставления запросов с объектами. Этот инструмент не способен выполнять большее количество функций, которые бы осилил обычный инструмент ORM, например, генерация SQL-запросов, кэширование результатов, отложенная выборка данных и т.д.
- Base One Foundation Component Library (BFC)
BFC – это платформа для разработки сетевых приложений баз данных с помощью Visual Studio и СУБД от Microsoft, Oracle, IBM, Sybase и MySQL.
А теперь давайте обсудим некоторые преимущества и недостатки использования инструментов ORM.
Преимущества использования инструментов ORM
Ниже приведен список некоторых преимуществ использования инструментов ORM:
- Ускоряет время разработки.
- Снижает стоимость разработки.
- Выполняется обработка логики, которая необходима для взаимодействия с базами данных.
- Улучшает безопасность. Инструменты ORM созданы для того, чтобы избежать возможности SQL-инъекций.
- Если вы используете инструменты ORM, то количество кода, который вам надо написать, уменьшается в сравнении с тем, если бы вы использовали SQL.
Недостатки использования инструментов ORM
- Изучение принципов работы инструментов ORM может занять много времени.
- Есть вероятность, что они не сильно помогут, если вы будете использовать слишком сложные запросы.
- Как правило, ORM медленнее, чем SQL.
Заключение
В этой статье мы с вами говорили об объектно-реляционном отображении (ORM). Этот подход используется для подключения объектно-ориентированных программ к реляционным базам данных.
Мы перечислили некоторые популярные инструменты ORM, которые могут работать с различными языками программирования.
И завершили мы все это списком некоторых преимуществ и недостатков использования инструментов ORM.