Jump to content

Объектно-реляционное отображение

(Перенаправлено из постреляционной базы данных )

Объектно-реляционное отображение ( ORM , O/RM и инструмент отображения O/R ) в информатике — это метод программирования для преобразования данных между реляционной базой данных и кучей объектно -ориентированного языка программирования. По сути, это создает базу данных виртуальных объектов , которую можно использовать из языка программирования.

В объектно-ориентированном программировании задачи управления данными воздействуют на объекты , которые объединяют скалярные значения в объекты. Например, рассмотрим запись адресной книги, которая представляет одного человека, ноль или более номеров телефонов и ноль или более адресов. В объектно-ориентированной реализации это можно смоделировать с помощью « объекта Person » с атрибутом/полем для хранения каждого элемента данных, содержащегося в записи: имени человека, списка телефонных номеров и списка адресов. Список телефонных номеров сам будет содержать «объекты PhoneNumber» и т. д. Каждая такая запись адресной книги рассматривается языком программирования как отдельный объект (например, на нее может ссылаться одна переменная, содержащая указатель на объект). различные методы С объектом могут быть связаны , например методы возврата предпочтительного номера телефона, домашнего адреса и т. д.

Напротив, реляционные базы данных, такие как SQL , группируют скаляры в кортежи , которые затем перечисляются в таблицах . Кортежи и объекты имеют некоторое общее сходство в том, что они оба являются способами сбора значений в именованные поля, так что всей коллекцией можно управлять как единым составным объектом. Однако у них есть много различий, в частности: управление жизненным циклом (вставка и удаление строк по сравнению со сборкой мусора или подсчетом ссылок ), ссылки на другие сущности (ссылки на объекты по сравнению со ссылками на внешние ключи) и наследование (отсутствует в реляционных базах данных). . Кроме того, объекты управляются в куче и находятся под полным контролем одного процесса, а кортежи базы данных являются общими и должны включать блокировку, слияние и повторную попытку. Объектно-реляционное сопоставление обеспечивает автоматическую поддержку сопоставления кортежей с объектами и обратно с учетом всех этих различий. [ 1 ]

Суть проблемы заключается в переводе логического представления объектов в атомизированную форму, которую можно хранить в базе данных, сохраняя при этом свойства объектов и их отношения, чтобы при необходимости их можно было перезагрузить как объекты. Если эта функциональность хранения и извлечения реализована, объекты называются постоянными . [ 1 ]

Детали реализации драйверов хранения обычно заключаются в API на используемом языке программирования, предоставляя методы для взаимодействия с носителем данных более простым и более соответствующим парадигмам окружающего кода способом.

Ниже приведен простой пример, написанный на коде C# , для выполнения запроса, написанного на SQL, с использованием ядра базы данных.

var sql = "SELECT id, first_name, last_name, phone, birth_date, sex, age FROM persons WHERE id = 10";
var result = context.Persons.FromSqlRaw(sql).ToList();
var name = result[0]["first_name"];

Напротив, в следующем примере используется API-интерфейс ORM-задания, который позволяет писать код, который естественным образом использует возможности языка.

var person = repository.GetPerson(10);
var firstName = person.GetFirstName();

В приведенном выше случае используется объект, представляющий репозиторий хранилища, и методы этого объекта. Другие платформы могут предоставлять код в виде статических методов, как в примере ниже, а другие методы могут вообще не реализовывать объектно-ориентированную систему. Часто выбор парадигмы делается для наилучшего соответствия ORM принципам проектирования окружающего языка.

var person = Person.Get(10);

Сравнение с традиционными методами доступа к данным

[ редактировать ]

По сравнению с традиционными методами обмена между объектно-ориентированным языком и реляционной базой данных ORM часто уменьшает объем кода, который необходимо написать. [ 2 ]

Недостатки инструментов ORM обычно связаны с высоким уровнем абстракции, скрывающим то, что на самом деле происходит в коде реализации. Кроме того, сильная зависимость от программного обеспечения ORM считается основным фактором создания плохо спроектированных баз данных. [ 3 ]

Объектно-ориентированные базы данных

[ редактировать ]

Другой подход — использовать объектно-ориентированную систему управления базами данных (OODBMS) или документо-ориентированные базы данных, такие как собственные базы данных XML , которые обеспечивают большую гибкость при моделировании данных. ООСУБД — это базы данных, разработанные специально для работы с объектно-ориентированными значениями. Использование ООСУБД устраняет необходимость преобразования данных в форму SQL и обратно, поскольку данные хранятся в исходном объектном представлении, а отношения представляются напрямую, а не требуют объединения таблиц /операций. Эквивалент ORM для документо-ориентированных баз данных называется устройствами сопоставления объектов и документов (ODM).

Документно-ориентированные базы данных также избавляют пользователя от необходимости «разбивать» объекты на строки таблицы. Многие из этих систем также поддерживают язык запросов XQuery для получения наборов данных.

Объектно-ориентированные базы данных, как правило, используются в сложных нишевых приложениях. Одним из аргументов против использования ООСУБД является то, что она не сможет выполнять специальные, независимые от приложения запросы. [ нужна ссылка ] По этой причине многие программисты чувствуют себя более комфортно с системой сопоставления объектов SQL, хотя большинство объектно-ориентированных баз данных способны обрабатывать запросы SQL в ограниченной степени. Другие ООСУБД обеспечивают репликацию в базы данных SQL как средство удовлетворения потребности в специальных запросах, сохраняя при этом хорошо известные шаблоны запросов. [ нужна ссылка ]

Проблемы

[ редактировать ]

При рассмотрении вопроса о том, как сопоставить объектную систему с реляционной базой данных, возникают разнообразные трудности. Эти трудности называются объектно-реляционным несоответствием импедансов . [ 4 ]

Альтернативой реализации ORM является использование собственных процедурных языков, имеющихся в каждой крупной базе данных. Их можно вызывать из клиента с помощью операторов SQL. Шаблон проектирования Data Access Object (DAO) используется для абстрагирования этих операторов и предлагает легкий объектно-ориентированный интерфейс для остальной части приложения. [ 5 ]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Что такое объектно-реляционное сопоставление?» . Обзор режима гибернации . JBOSS в спящем режиме . Проверено 27 января 2022 г.
  2. ^ Дуглас Барри, Торстен Станьенда, «Решение проблемы хранения объектов Java», Computer, vol. 31, нет. 11, стр. 33–40, ноябрь 1998 г., отрывок по адресу https://www.service-architecture.com/articles/object-relational-mapping/transparent-persistence-vs-jdbc-call-level-interface.html Lines. кода, использующего O/R, составляют лишь часть того, что необходимо для интерфейса уровня вызова (1:4). Для этого упражнения потребовалось 496 строк кода с использованием привязки Java ODMG по сравнению с 1923 строками кода с использованием JDBC.
  3. ^ Джош Беркус, «Разрушение вашей базы данных», Компьютер, август 2009 г., https://www.toolbox.com/tech/data-management/blogs/wrecking-your-database-080509/
  4. ^ Возвращение к объектно-реляционному сопоставлению - количественное исследование влияния технологии баз данных на стратегии O/R-сопоставления. М. Лоренц, Дж. П. Рудольф, Г. Гессе, М. Уфлакер, Х. Платтнер. Гавайская международная конференция по системным наукам (HICSS), 4877-4886 (DOI: 10.24251/hicss.2017.592)
  5. ^ Фейерштейн, Стивен; Билл Прибыл (сентябрь 1997 г.). «Программирование Oracle PL/SQL» . 18.5 Изменение постоянных объектов . Проверено 23 августа 2011 г. {{cite web}}: CS1 maint: местоположение ( ссылка )
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 164a04f75df93f21f1b3bbe9431e6f94__1710525120
URL1:https://arc.ask3.ru/arc/aa/16/94/164a04f75df93f21f1b3bbe9431e6f94.html
Заголовок, (Title) документа по адресу, URL1:
Object–relational mapping - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)