Из Википедии, бесплатной энциклопедии
  (Перенаправлено из активной записи )
Перейти к навигации Перейти к поиску

В программной инженерии , то активный шаблон записи считается архитектурной картиной некоторых людьми и в качестве анти-паттерна некоторых других недавно. [1] [2] Он присутствует в программном обеспечении, которое хранит данные объекта в памяти в реляционных базах данных . Он был назван Мартином Фаулером в его книге 2003 года « Шаблоны архитектуры корпоративных приложений» . [3] Интерфейс объекта, соответствующего этому шаблону, будет включать такие функции, как Insert, Update и Delete, а также свойства, которые более или менее соответствуют столбцам в базовой таблице базы данных.

Шаблон активной записи - это подход к доступу к данным в базе данных . Таблицы баз данных или вид заворачивают в класс . Таким образом, экземпляр объекта привязывается к одной строке в таблице. После создания объекта при сохранении в таблицу добавляется новая строка. Любой загруженный объект получает информацию из базы данных. Когда объект обновляется, соответствующая строка в таблице также обновляется. Класс-оболочка реализует методы или свойства средств доступа для каждого столбца в таблице или представлении.

Этот шаблон обычно используется инструментами сохранения объектов и объектно-реляционным отображением (ORM). Обычно отношения внешнего ключа будут представлены как экземпляр объекта соответствующего типа через свойство.

Реализации [ править ]

Реализации концепции можно найти в различных структурах для многих сред программирования. Например, если partsв базе данных есть таблица со столбцами name(строковый тип) и price(числовой тип) и в классе реализован шаблон Active Record Part, псевдокод

part = новая деталь ()part.name = "Образец детали"part.price = 123,45part.save ()

создаст новую строку в partsтаблице с заданными значениями, и примерно эквивалентно SQL команды

INSERT  INTO  части  ( наименование ,  цена )  VALUES  ( 'Sample часть' ,  123 . 45 );

И наоборот, класс можно использовать для запроса базы данных:

b = Part.find_first ("имя", "коробка передач")

Будет найден новый Partобъект на основе первой совпадающей строки из partsтаблицы, nameстолбец которой имеет значение «gearbox». Используемая команда SQL может быть похожей на следующую, в зависимости от деталей реализации SQL в базе данных:

ВЫБРАТЬ  *  ИЗ  частей  WHERE  name  =  'gearbox'  LIMIT  1 ;  - MySQL или PostgreSQL

Критика [ править ]

Тестируемость [ править ]

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

Принцип единой ответственности и разделение ответственности [ править ]

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

Распределенные системы [ править ]

Шаблоны на основе записей плохо работают в распределенных системах, особенно там, где параллелизм невозможен (например, в автономном режиме). т.е. два обновления могут иметь одно правильное поле, но только одна из двух записей может выиграть. [ требуется разъяснение ]

См. Также [ править ]

Ссылки [ править ]

  1. ^ Антипаттерн: модель - активная запись
  2. ^ ORM антипаттерны - Часть 1: Active Record
  3. ^ Фаулер, Мартин (2003). Паттерны архитектуры корпоративных приложений . Эддисон-Уэсли. ISBN 978-0-321-12742-6.