Шаблон активной записи

редактировать

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

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

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

Содержание

  • 1 Реализации
  • 2 Критика
    • 2.1 Тестируемость
    • 2.2 Принцип единой ответственности и разделение ответственности
    • 2.3 Распределенные системы
  • 3 См. Также
  • 4 Ссылки

Реализации

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

part = new Part () part.name = "Sample part" part.price = 123.45 part.save ()

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

INSERT INTO parts (name, price) VALUES (' Часть образца ', 123.45);

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

b = Part.find_first ("name", "gearbox")

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

SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1; - MySQL или PostgreSQL

Критика

Тестируемость

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

Отдельный. принцип ответственности и разделение ответственности

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

Распределенные системы

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

См. также

Ссылки

Последняя правка сделана 2021-06-08 22:10:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте