В программной инженерии шаблон активной записи является архитектурным шаблоном . Он встречается в программном обеспечении, которое хранит объектные данные в памяти в реляционных базах данных . Он был назван Мартином Фаулером в его книге 2003 года Patterns of Enterprise Application Architecture . [1] [2] Интерфейс объекта, соответствующего этому шаблону, будет включать такие функции, как Insert, Update и Delete, а также свойства, которые более или менее напрямую соответствуют столбцам в базовой таблице базы данных.
Шаблон активной записи — это подход к доступу к данным в базе данных . Таблица или представление базы данных оборачиваются в класс . Таким образом, экземпляр объекта привязывается к одной строке в таблице. После создания объекта новая строка добавляется в таблицу при сохранении. Любой загруженный объект получает свою информацию из базы данных. При обновлении объекта соответствующая строка в таблице также обновляется. Класс-оболочка реализует методы доступа или свойства для каждого столбца в таблице или представлении.
Этот шаблон обычно используется инструментами сохранения объектов и в объектно-реляционном отображении (ORM). Обычно внешние ключевые связи будут представлены как экземпляр объекта соответствующего типа через свойство.
Реализации этой концепции можно найти в различных фреймворках для многих сред программирования. Например, если parts
в базе данных есть таблица со столбцами name
(тип строки) и price
(тип числа), а шаблон Active Record реализован в классе Part
, то псевдокод
часть = новая часть () часть . имя = "Образец детали" часть . цена = 123 . 45 часть . сохранить ()
создаст новую строку в parts
таблице с заданными значениями и примерно эквивалентна команде SQL
ВСТАВИТЬ В детали ( название , цена ) ЗНАЧЕНИЯ ( 'Образец детали ' , 123.45 ) ;
И наоборот, класс можно использовать для запроса к базе данных:
b = Часть . find_first ( "имя" , "коробка передач" )
Это найдет новый Part
объект на основе первой совпадающей строки из parts
таблицы, столбец которой name
имеет значение "gearbox". Используемая команда SQL может быть похожа на следующую, в зависимости от деталей реализации SQL базы данных:
SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1 ; -- MySQL или PostgreSQL
Поскольку данные и методы доступа к базе данных находятся в одном файле, эти файлы в конечном итоге становятся больше.
Еще одна критика шаблона активной записи заключается в том, что из-за сильной связи взаимодействия с базой данных и логики приложения объект активной записи не следует принципу единой ответственности и разделения интересов . Это противоречит многоуровневой архитектуре , которая должным образом решает эти проблемы. [ требуется цитата ] [ требуется пояснение ] Из-за этого шаблон активной записи лучше всего и чаще всего используется в простых приложениях, которые представляют собой формы поверх данных с функциональностью CRUD , или только как часть архитектуры. [ требуется цитата ] Обычно этой частью является доступ к данным, и поэтому несколько ORM реализуют шаблон активной записи.