Как говорится в названии; что такое структура ORM и для чего она полезна?Что такое объектно-реляционная структура отображения?
ответ
Объектно-реляционное отображение (ОРМ, O/RM, и О/Р отображение) в компьютерном программном обеспечении представляет собой метод программирования для преобразования данных между несовместимыми системами типа в реляционных базах данных и объектно-ориентированное программирование Языки. Это создает, по сути, «базу данных виртуальных объектов», которая может быть , используемая в пределах программирования . Имеются как бесплатные, так и коммерческие пакеты, которые выполняют объектно-реляционное сопоставление, , хотя некоторые программисты предпочитают создавать свои собственные инструменты ORM.
Это хорошо для абстрагирования хранилища данных (плоского файла/SQL/любого другого), чтобы обеспечить интерфейс, который может использоваться в вашем коде. Например, (в рельсах) вместо построения SQL, чтобы найти первый пользователь в таблице пользователей, мы могли бы сделать это:
User.first
Что бы вернуть нам экземпляр нашей модели пользователя, с атрибутами первого пользователя в таблице пользователей.
Материал из Википедии: http://en.wikipedia.org/wiki/Object-relational_mapping
Объектно-реляционное отображение (ОРМ, O/RM, и О/Р отображение) в компьютерном программном обеспечении представляет собой метод программирования для преобразования данных между системами несовместимых типа в реляционных базах данных и объектно ориентированных языков программирования. Это создает, по сути, «базу данных виртуальных объектов», которая может использоваться из языка программирования. Доступны как бесплатные, так и коммерческие пакеты, которые выполняют объектно-реляционное сопоставление, хотя некоторые программисты предпочитают создавать свои собственные инструменты ORM.
Плюсы и минусы ORM часто уменьшает количество кода, необходимого для написания, делая программное обеспечение более надежным (чем меньше строк кода в программе, тем меньше ошибок содержится в них). [1].
Имеются затраты, а также выгоды при использовании сопоставления O/R. Например, некоторые инструменты сопоставления O/R не работают хорошо во время массовых удалений данных. Хранимые процедуры могут иметь лучшую производительность, но не переносимы.
Простым ответом является то, что вы переносите свои таблицы или хранимые процедуры в классы на вашем языке программирования, чтобы вместо того, чтобы писать операторы 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 имеют разные имена в типичных функциях и разные способы выполнения вычислений с датами, поэтому запрос «заставить меня всех людей редактировать последние 24 часа» может повлечь за собой разный синтаксис SQL только для этих двух движков базы данных , Это отличие можно отделить от вашего логического кода.
Кроме того, вы можете сосредоточиться на написании логики, вместо того чтобы получить все права SQL. Код обычно будет более читабельным, так как он не содержит всю «сантехнику», необходимую для разговора с базой данных.
Я желаю, Когда википедия начнет давать такой простой и содержательные определения сложных термов .. +1 для простоты. – Faizan
+1 для чистого, простого, приятного ответа. Ваш лучше, чем принятый ответ. –
Люди в Интернете ищут такие красивые описания, вместо того, чтобы положить голову на технический жаргон. – bioinformatician
Это позволяет делать такие вещи (это код Doctrine):
$activeUsers = Doctrine::getTable('User')->createQuery('u')->addWhere('u.active = false');
foreach($activeUsers as $user)
{
$user->active = true;
$user->save();
}
ORM является:
абстракции и как любая абстракция это делает жизнь проще для вас.
Базы данных обычно работают на реляционной модели: у вас есть таблицы (упрощающие: как электронная таблица), а отношения между ними - индивидуально, один-ко-многим, многие-ко-многим и т. Д., Что означает, например что одна запись в таблице A содержит множество связанных записей в таблице B. Вы можете извлекать данные из них в виде строк (набор значений, представляющих строки из таблицы/таблиц) More in wikipedia.
Современные языки программирования используют объектную модель. Объекты имеют методы, атрибуты (простые или сложные) и т. Д.
Программное обеспечение ORM выполняет переход между этими моделями. Например, он помещает все связанные записи из таблицы B в атрибут объекта A. Этот вид программного обеспечения упрощает использование реляционных баз данных (самый популярный вид) с объектно-ориентированными языками.
Библиотеки объектно-реляционного сопоставления (ORM) предоставляют это сопоставление таблиц базы данных для классов объектов домена.
Когда вы идете с ORM (Object Relational Mapper), вы найдете DBAL (слой абстракции базы данных) рядом. Поэтому необходимо знать, что это такое, чтобы получить хорошее представление о том, что вы используете, и какие преимущества вы получите.
DBAL (Database Abstraction Layer)
Он действует как слой между вашим кодом и базой данных. Независимо от вашей базы данных, написанный код будет отлично работать с незначительной настройкой.
Предположим, что для текущего проекта, когда вы используете MySQL, когда он полностью созрел и получает огромный трафик, ваша команда планирует по какой-то причине переключить базу данных в Oracle, тогда код, который вы написали в MySQL, должен быть переписан на запросы на основе Oracle. И переписывание запросов для всего проекта - утомительная задача.
Вместо этого, если вы используете любые библиотеки DBAL, вы можете переключить конфигурацию базы данных и убедиться, что ваш проект будет запущен в течение дня (возможно, с небольшой настройкой).
ОРМ (Object Relational Mapper)
Объект реляционное отображение (ОРМ) представляет собой метод (Design Pattern) доступа к реляционной базе данных из объектно-ориентированного языка.
Если вы использовали какие-либо фреймворки, такие как Symfony (если вы исходите из фона PHP)/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);
- 1. Что такое структура разработки? Что такое IDE?
- 2. Что такое структурная структура?
- 3. Что такое структура контактов.edb?
- 4. Что такое структура Eclipse?
- 5. Что такое древовидная структура кучи?
- 6. Что такое файловая структура wordpress?
- 7. Что такое структура разложения вейвлетов?
- 8. Что такое базовая структура civicrm?
- 9. Что такое структура сети openstreetmap
- 10. Что такое структура данных VARIANT?
- 11. Что такое структура данных perl?
- 12. Что такое структура в C?
- 13. Что такое структура? И что такое Учение 2?
- 14. Что такое функция уменьшения отображения
- 15. Что такое структура данных, представляющая несколько коллекций?
- 16. Что такое «упакованная» структура в C?
- 17. DDD - что такое правильная структура кода
- 18. Что такое динамическая структура, а не динамическая?
- 19. Что такое структура базы данных гидролокатора?
- 20. Что такое простейшая структура транзакций в Java?
- 21. Bootstrap3: что такое стандартная структура и макет?
- 22. Что такое linux analog to WIN32_FIND_DATA структура
- 23. Что такое структура данных с поддержкой массива?
- 24. Что такое структура составного индекса оракула
- 25. Что такое хорошая структура для создания игр?
- 26. Что такое правильная внутренняя структура JAR-файла
- 27. Что такое хорошая структура проекта в C
- 28. Структура и ссылки, что такое лучшие практики?
- 29. Структура структуры SBT. Что такое «проект»?
- 30. C# NAudio: что такое правильная структура данных?
Это анти-модель: http://www.yegor256.com/2014/12/01/orm-offensive-anti-pattern.html – yegor256