Что такое ORM, как он работает, и как я должен использовать тот? [закрытый]

Если Вам нужна усовершенствованная математика в Вашем ежедневном задании, поскольку программист действительно зависит от Ваших задач. Мне нужны они. Причина, я должен работать с гидравлическими вычислениями для трубопроводных систем для оценки в коде трубопроводной системы, прежде чем это будет создано. Вы никогда не хотите стоять около трубопроводной системы сворачивания из-за под или сверхдавление. ;)

я предполагаю для многих других видов 'моделирований реального мира', Вам будет нужна усовершенствованная математика также.

230
задан NeilG 11 June 2019 в 06:31
поделиться

4 ответа

ORM (Object Relational Mapper) - это часть / уровень программного обеспечения, которое помогает сопоставить объекты кода с вашей базой данных.

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

Вот краткий отрывок от Мартина Фаулера (Data Mapper):

Patterns of Enterprise Application Architecture Data Mappers

17
ответ дан 23 November 2019 в 03:41
поделиться

Как и все аббревиатуры, это двусмысленно, но я предполагаю, что они имеют в виду объектно-реляционный преобразователь - способ прикрыть глаза и убедить, что под ним нет SQL, а скорее он все объекты ;-). Не совсем верно, конечно, и не без проблем - всегда красочный Джефф Этвуд описал ORM как Вьетнам CS ;-). Но, если вы мало знаете SQL или совсем не знаете SQL и имеете довольно простую / небольшую проблему, они могут сэкономить ваше время! -)

4
ответ дан 23 November 2019 в 03:41
поделиться

Введение

Объектно-реляционное сопоставление (ORM) - это метод, который позволяет запрашивать и управлять данными из базы данных с использованием объектно-ориентированной парадигмы. Говоря об ORM, большинство людей имеют в виду библиотеку , которая реализует технику объектно-реляционного сопоставления, отсюда и фраза «ORM».

Библиотека ORM - это совершенно обычная библиотека, написанная на вашем языке выбор, который инкапсулирует код, необходимый для управления данными, поэтому вы больше не используете SQL; вы напрямую взаимодействуете с объектом на том же языке, который используете.

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

У вас есть книжный класс, вы хотите получить все книги, из которых автор - «Линус». Вручную вы бы сделали что-то вроде этого:

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

С библиотекой ORM это будет выглядеть так:

book_list = BookTable.query(author="Linus");

Механическая часть обрабатывается автоматически через библиотеку ORM.

Плюсы и минусы

Использование ORM экономит много времени, потому что:

  • ] DRY : вы пишете свою модель данных только в одном месте, и код проще обновлять, поддерживать и повторно использовать.
  • Многие вещи выполняются автоматически, от обработки базы данных до I18N .
  • Он заставляет вас писать код MVC , что, в конце концов, делает ваш код немного чище.
  • Вам не нужно писать плохо сформированный SQL (большинство веб-программистов действительно отстой, потому что SQL рассматривается как "вспомогательный" язык, хотя на самом деле это очень мощный и сложный язык).
  • Sanitizing; использовать подготовленные операторы или транзакции так же просто, как вызвать метод.

Использование библиотеки ORM более гибко, потому что:

  • Она соответствует вашему естественному способу кодирования (это ваш язык!).
  • Она абстрагирует систему БД, поэтому вы можете изменить ее, когда захотите.
  • Модель слабо привязана к остальной части приложения, поэтому вы можете изменить ее или использовать где-нибудь еще.
  • Она позволяет вам без головной боли использовать достоинства ООП, такие как наследование данных.

Но ORM может быть проблемой:

  • Вы должны изучить его, а библиотеки ORM не являются легковесными инструментами,
  • Вы должны установить его. Та же проблема.
  • Производительность нормальная для обычных запросов, но мастер SQL всегда будет лучше справляться со своим собственным SQL для больших проектов.
  • Он абстрагирует базу данных. Хотя это нормально, если вы знаете, что происходит за кулисами, это ловушка для новых программистов, которые могут писать очень жадные утверждения, как тяжелый удар в для цикла .

Как узнать об ORM?

Хорошо, используйте его. Какую бы библиотеку ORM вы ни выбрали, все они используют одни и те же принципы. Здесь есть много ORM-библиотек:

Если вы хотите попробуйте библиотеку ORM в веб-программировании, лучше использовать весь стек фреймворка, например:

  • Symfony (PHP, используя Propel или Doctrine).
  • Django (Python, используя внутренний ORM).

Не пытайтесь написать свой собственный ORM, если вы не пытаетесь чему-то научиться. Это гигантская работа,

483
ответ дан 23 November 2019 в 03:41
поделиться

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

Если у вас есть пользователи, которым вы хотите ограничить записи, которые они могут когда-либо видеть, вы можете использовать представление , предоставьте им доступ только к представлению, а не к базовым таблицам, а затем запросите представление

Похоже, что отчеты Crystal предпочитают использовать представления для сохраненных процессов, поэтому люди, которые много пишут отчеты, как правило, используют много представлений

] Представления также очень полезны при рефакторинге баз данных. Часто вы можете скрыть изменение, чтобы старый код не увидел его, создав представление.

$("#source").appendTo("#destination");

В качестве альтернативы вы можете использовать функцию prependTo (которая добавляет в начало элемента):

$("#source").prependTo("#destination");

Пример:

 $ ("# appendTo"). Click (function () {$ ("#moveMeIntoMain"). appendTo ($ ("# main"));}); $ ("# prependTo"). click (function () {$ ("# moveMeIntoMain"). prependTo ($ ("# main"));}); 
 #main {border: 2px сплошной синий; минимальная высота: 100 пикселей; } .moveMeIntoMain {граница: 1px сплошной красный; } 
  
main < / div>
переместить меня на главную
50
ответ дан 23 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

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