Что Объектно-реляционное Отображает Платформу? [дубликат]

Повышение предоставляет строковый алгоритм для этого :

#include 

std::string str = "HELLO, WORLD!";
boost::algorithm::to_lower(str); // modifies str

Или, для неоперативного :

#include 

const std::string str = "HELLO, WORLD!";
const std::string lower_str = boost::algorithm::to_lower_copy(str);

80
задан RCIX 20 July 2009 в 08:25
поделиться

6 ответов

  • Запустить глобальный таймер, который срабатывает, скажем, каждые 1000 миллисекунд, и обновить счетчик общего истекшего времени. Назовем эту переменную " elapsedTime "
  • Пока файл копируется, обновите некоторую локальную переменную, указав уже скопированное количество. Назовем эту переменную « totalCopied »
  • В периодическом событии таймера разделите totalCopied на totalElapsed , чтобы получить количество байтов, скопированных за один таймер. интервал (в данном случае 1000 мс). Назовем эту переменную « bytesPerSec »
  • Разделим общий размер файла на bytesPerSec и получим общее количество секунд, теоретически необходимое для копирования этого файла. Позволять' и отображение O / R) в компьютерном программном обеспечении это метод программирования для преобразование данных между несовместимыми системы типов в реляционных базах данных и объектно-ориентированное программирование языков. Это фактически создает "база данных виртуальных объектов", которая может быть используется изнутри программирования язык. Есть как бесплатные, так и доступные коммерческие пакеты, которые выполнять объектно-реляционное сопоставление, хотя некоторые программисты предпочитают создавать свои собственные инструменты ORM.

    Это хорошо для абстрагирования хранилища данных (плоский файл / SQL / что-то еще), чтобы предоставить интерфейс, который можно использовать в вашем коде. Например, (в рельсах) вместо построения SQL для поиска первого пользователя в таблице пользователей мы могли бы сделать это:

    User.first
    

    Что вернет нам экземпляр нашей пользовательской модели с атрибутами первого пользователя в пользователях. таблица.

47
ответ дан 24 November 2019 в 09:44
поделиться

Простой ответ заключается в том, что вы оборачиваете свои таблицы или хранимые процедуры в классы на вашем языке программирования, чтобы вместо написания операторов 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;

или аналогичный код (здесь много вариаций). Некоторые фреймворки также помещают много кода in в качестве статических методов для самих классов, что означает, что вместо этого вы можете сделать что-то вроде этого:

Person p = Person.Get(10);

Некоторые также реализуют сложные системы запросов, поэтому вы можете сделать это:

Person p = Person.Get(Person.Properties.Id == 10);

Структура - это то, что делает этот код возможным.

Теперь о преимуществах. Прежде всего, вы скрываете SQL от кода логики. Это дает возможность упростить поддержку большего количества механизмов баз данных. Например, MS SQL Server и Oracle имеют разные имена для типичных функций и разные способы выполнения вычислений с датами, поэтому запрос «показать мне, что все лица редактировали последние 24 часа» может повлечь за собой другой синтаксис SQL только для этих двух механизмов базы данных. . Эту разницу можно убрать из кода логики.

Кроме того, вы можете сосредоточиться на написании логики, а не на правильном выполнении всего SQL. Код обычно также будет более читабельным, поскольку он не содержит всей «сантехники», необходимой для взаимодействия с базой данных.

252
ответ дан 24 November 2019 в 09:44
поделиться

Базы данных обычно работают по реляционной модели: у вас есть таблицы (упрощая: как электронная таблица) и отношения между ними - один к одному, один ко многим, многие ко многим и т. д., что означает, например, что одна запись в таблице A имеет много связанных записей в таблице B. Вы можете получать данные из них в виде строк (набор значений, представляющих строки из таблицы / таблиц) Подробнее в википедии .

Современные языки программирования используют объектную модель. У объектов есть методы, атрибуты (простые или сложные) и т. Д.

Программа ORM выполняет переход между этими моделями. Например, он помещает все связанные записи из таблицы B в атрибут объекта A. Этот вид программного обеспечения упрощает использование реляционных баз данных (самый популярный вид) с языками объектного программирования.

9
ответ дан 24 November 2019 в 09:44
поделиться

ORM - это:

Абстракция, которая, как и любая абстракция, облегчает вам жизнь.

2
ответ дан 24 November 2019 в 09:44
поделиться

Из Википедии: http://en.wikipedia.org/wiki/Object-relational_mapping

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

Плюсы и минусы ORM часто сокращает объем кода, который необходимо написать, делая программное обеспечение более надежным (чем меньше строк кода в программе, тем меньше ошибок содержится в них). [1].

Есть и затраты, и преимущества использования сопоставления O / R. Например, некоторые инструменты сопоставления O / R не работают во время массового удаления данных. Хранимые процедуры могут иметь лучшую производительность, но их нельзя переносить.

0
ответ дан 24 November 2019 в 09:44
поделиться

Он позволяет делать такие вещи (это код Доктрины):

$activeUsers = Doctrine::getTable('User')->createQuery('u')->addWhere('u.active = false');
foreach($activeUsers as $user)
{
   $user->active = true;
   $user->save();
}
0
ответ дан 24 November 2019 в 09:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: