Шаблон активной записи
В разработке программного обеспечения шаблон активной записи является архитектурным шаблоном . Он встречается в программном обеспечении, которое хранит данные объектов в памяти в реляционных базах данных . Он был назван Мартином Фаулером в его книге «Шаблоны архитектуры корпоративных приложений» 2003 года . [ 1 ] [ 2 ] Интерфейс объекта, соответствующего этому шаблону, будет включать такие функции, как «Вставка», «Обновление» и «Удалить», а также свойства, которые более или менее напрямую соответствуют столбцам в базовой таблице базы данных.
Шаблон активной записи — это подход к доступу к данным в базе данных . Таблица базы данных или представление заключены в класс . Таким образом, экземпляр объекта привязывается к одной строке таблицы. После создания объекта в таблицу при сохранении добавляется новая строка. Любой загруженный объект получает информацию из базы данных. При обновлении объекта соответствующая строка в таблице также обновляется. Класс-оболочка реализует или свойства доступа методы для каждого столбца в таблице или представлении.
Этот шаблон обычно используется инструментами сохранения объектов и объектно-реляционным сопоставлением (ORM). Обычно отношения внешнего ключа представляются как экземпляр объекта соответствующего типа через свойство.
Реализации
[ редактировать ]Реализации этой концепции можно найти в различных средах программирования. Например, если есть таблица 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 ('Sample part', 123.45);
И наоборот, класс можно использовать для запроса к базе данных:
b = Part.find_first("name", "gearbox")
Это позволит найти новый Part
объект на основе первой соответствующей строки из parts
стол чей name
столбец имеет значение «коробка передач». Используемая команда SQL может быть похожа на следующую, в зависимости от деталей реализации SQL в базе данных:
SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1; -- MySQL or PostgreSQL
Критика
[ редактировать ]Большие файлы
[ редактировать ]Поскольку данные и методы доступа к базе данных находятся в одном файле, эти файлы в конечном итоге становятся больше.
Принцип единой ответственности и разделение ответственности
[ редактировать ]Другая критика шаблона активной записи заключается в том, что из-за сильной связи взаимодействия базы данных и логики приложения объект активной записи не следует принципу единой ответственности и разделения ответственности . Это противоречит многоуровневой архитектуре , которая должным образом учитывает эти практики. [ нужна ссылка ] [ нужны разъяснения ] По этой причине шаблон активной записи является лучшим и чаще всего используется в простых приложениях, которые все представляют собой формы поверх данных с функциональностью CRUD или только как часть архитектуры. [ нужна ссылка ] Обычно эта часть связана с доступом к данным и объясняет, почему некоторые ORM реализуют шаблон активной записи.
См. также
[ редактировать ]- Бизнес-объект – сущность в многоуровневом программном приложении.
- CRUD – Основные операции с компьютерной базой данных
- Шаблон преобразователя данных
- Объектно-реляционное отображение – Техника программирования
Ссылки
[ редактировать ]- ^ P каталога EAA - Активная запись
- ^ Фаулер, Мартин (2003). Шаблоны архитектуры корпоративных приложений . Аддисон-Уэсли. ISBN 978-0-321-12742-6 .