8 ответов:
объектно-реляционное отображение (ORM, O / RM, и отображение O/R) в программном обеспечении компьютера техника программирования для преобразования данных между несовместимыми системы типов в реляционных базах данных и объектно-ориентированное программирование языки. Это создает, по сути, "база данных виртуальных объектов", которая может быть используется в программировании язык. Есть как бесплатные, так и коммерческие пакеты доступны, что выполнять объектно-реляционное отображение, хотя некоторые программисты предпочитают создайте свои собственные инструменты ORM.
это хорошо для абстрагирования хранилища данных (плоский файл / SQL / что угодно), чтобы обеспечить интерфейс, который может быть использован в вашем коде. Например, (в rails) вместо построения SQL для поиска первого пользователя в таблице users мы могли бы сделать следующее:
User.firstкоторый вернет нам экземпляр нашей модели пользователя, с атрибутами первого пользователя в пользователях стол.
простой ответ заключается в том, что вы переносите свои таблицы или хранимые процедуры в классы на своем языке программирования, чтобы вместо написания инструкций SQL для взаимодействия с вашей базой данных вы использовали методы и свойства объектов.
другими словами, вместо чего-то вроде этого:
String sql = "SELECT ... FROM persons WHERE id = 10" DbCommand cmd = new DbCommand(connection, sql); Result res = cmd.Execute(); String name = res[0]["FIRST_NAME"];вы делаете что-то вроде этого:
Person p = repository.GetPerson(10); String name = p.FirstName;или аналогичный код (здесь много вариантов.) Некоторые фреймворки и поставить много кода в качестве статических методов сами классы, что означает, что вы могли бы сделать что-то вроде этого вместо:
Person p = Person.Get(10);некоторые также реализуют сложные системы запросов, поэтому вы можете сделать это:
Person p = Person.Get(Person.Properties.Id == 10);основа-это то, что делает этот код можно.
теперь, благ. Прежде всего, вы скрываете SQL от вашего логического кода. Это имеет то преимущество, что позволяет более легко поддерживать больше ядер баз данных. Например, MS SQL Server и Oracle имеют разные имена для типичных функций, а также различные способы выполнения вычислений с датами, поэтому запрос "get me all persons edited the last 24 hours" может повлечь за собой различный синтаксис SQL только для этих двух ядер баз данных. Это различие можно убрать из вашего логического кода.
кроме того, вы можете сосредоточиться на написании логики, вместо того, чтобы получить все права SQL. Код, как правило, будет более читаемым, так как он не содержит все "сантехника", необходимые для разговора с базой данных.
базы данных обычно работают на реляционной модели: у вас есть таблицы (упрощение: как электронная таблица), и отношения между ними-один к одному, один ко многим, многие ко многим и т. д., Что означает, например, что одна запись в таблице A имеет много связанных записей в таблице B. Вы можете извлекать данные из них в виде строк (коллекция значений, представляющих строки из таблицы/таблиц) еще в Википедии.
современные языки программирования используют объектную модель. Объекты имеют методы, атрибуты (простой или сложный) etc.
программное обеспечение ORM выполняет переход между этими моделями. Например, он помещает все связанные записи из таблицы B в атрибут объекта A. Этот вид программного обеспечения упрощает использование реляционных баз данных (самый популярный вид) с объектными языками программирования.
всякий раз, когда вы идете с ORM (Object Relational Mapper), вы найдете DBAL (слой абстракции базы данных) бок о бок. Поэтому необходимо знать, что это такое, чтобы получить хорошее представление о том, что вы используете и какие преимущества вы получите.
DBAL (уровень абстракции базы данных)
Он действует как прослойка между кодом и базой данных. Независимо от того, что ваша база данных, написанный код будет работать нормально с незначительной настройкой.
предположим, что для текущего проекта вы используете MySQL, как только он полностью созрел и получает огромный трафик, ваша команда планирует по какой-то причине переключить базу данных на Oracle, тогда код, который вы написали в MySQL, должен быть переписан на запросы на основе Oracle. И переписывание запросов для всего проекта-это утомительная задача.
вместо этого, если вы используете какие-либо библиотеки DBAL, вы можете переключить конфигурацию базы данных и убедиться, что ваш проект будет запущен и запущен внутри день (может быть с некоторыми незначительными настройками).
ORM (Object Relational Mapper)
объектно-реляционное сопоставление (ORM)-это метод (шаблон проектирования) доступа к реляционной базе данных из объектно-ориентированного языка.
Если вы использовали какие-либо фреймворки, такие как Symfony (если вы пришли из PHP background)/Hibernate (Java), то вы знакомы с ними. Это не что иное, как объекты.
для того, чтобы получить доступ к база данных в объектно-ориентированном контексте и интерфейс перевода логики объекта необходимо, этот интерфейс называется ORM. Его составляют объекты, которые дают доступ к данным и сохраняют бизнес-правила с собой.
например.
class User{ private $email; private $password; public function setEmail($email){ $this->email = $email; return $this; } public function getEmail(){ return $this->email; } public function setPassword($password){ $this->password = $password; return $this; } public function getPassword(){ return $this->password; } } /* To save User details you would do something like this */ $userObj = new User(); $userObj->setEmail('sanitizedEmail'); $userObj->setPassword('sanitizedPassword'); $userObj->save(); /* To fetch user details you would do something like this */ $userObj = new User(); $userDetails = $userObj->find($id);
ORM - это:
абстракция, и как любая абстракция, это делает жизнь проще для вас.
Из Википедии: http://en.wikipedia.org/wiki/Object-relational_mapping
объектно-реляционное отображение (ORM, O/RM и O/R mapping) в компьютерном программном обеспечении-это метод программирования для преобразования данных между несовместимыми системами типов в реляционных базах данных и объектно-ориентированных языках программирования. Это создает, по сути," базу данных виртуальных объектов", которая может использоваться из языка программирования. Есть как бесплатные, так и коммерческие пакеты доступные, которые выполняют объектно-реляционное сопоставление, хотя некоторые программисты предпочитают создавать свои собственные инструменты ORM.
плюсы и минусы ORM часто уменьшает количество кода, необходимого для записи, что делает программное обеспечение более надежным (чем меньше строк кода в программе, тем меньше ошибок содержится в них).[1].
есть затраты, а также преимущества для использования O/R mapping. Например, некоторые инструменты отображения O / R не работают хорошо во время массового удаления данных. На хранении процедуры могут иметь лучшую производительность, но не являются портативными.
Это позволяет вам делать такие вещи (это доктрина код):
$activeUsers = Doctrine::getTable('User')->createQuery('u')->addWhere('u.active = false'); foreach($activeUsers as $user) { $user->active = true; $user->save(); }
библиотеки объектно-реляционного отображения (ORM) предоставляют это отображение таблиц базы данных в классы объектов домена.
Comments