Шаблон active record — це шаблон проєктування що використовується при реалізації доступу до реляційних баз даних. Вперше згадується Мартіном Фаулером в книжці Patterns of Enterprise Application Architecture [Архівовано 28 березня 2014 у Wayback Machine.]. Інтерфейс такого об'єкта включає функції CRUD, а також поля, що більш чи менш прямо відповідають полям відповідної таблиці в базі даних.
Active Record реалізує популярний підхід об'єктно-орієнтованого проєкціювання (ORM). Кожен клас AR відображає таблицю (чи представлення) бази даних, екземпляр AR — запис цієї таблиці, а загальні операції CRUD реалізовані як методи AR. В результаті можна працювати з більшою об'єктно-орієнтованістю.
Реалізація
public class Customer
{
public int ID { get; set; }
public string Name { get; set; }
public Customer(int id, string name)
{
ID = id;
Name = name;
}
// статичний метод працює як фабрика
public static Customer GetByID(int id)
{
Db db = ...;
var record = db.ReadUser(id);
return new Customer(record.id, record.name);
}
public void Save()
{
...
}
public void Delete()
{
Db db = ...;
db.Delete(this.ID);
}
}
Див. також
Посилання
- Active Record [Архівовано 26 серпня 2020 у Wayback Machine.]
- Active Record [Архівовано 22 лютого 2018 у Wayback Machine.] в Yii
- Реалізація на Ruby
- Реалізаці на PHP
- Реалізація в .NET
Література
Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М. : «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.
| Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |
|
---|
| Основні шаблони | |
---|
| Твірні шаблони | |
---|
| Структурні шаблони | Адаптер (Adapter) • Декоратор (Decorator) • Замісник (Proxy) • Компонувальник (Composite) • Міст (Bridge) • Легковаговик (Flyweight) • Фасад (Facade) • Модуль • Виділення приватного класу даних • Близнюки |
---|
| Шаблони поведінки | Відвідувач (Visitor) • Інтерпретатор (Interpreter) • Ітератор (Iterator) • Команда (Command) • Ланцюжок відповідальностей (Chain of Responsibility) • Посередник (Mediator) • Спостерігач (Observer) • Стан (State) • Стратегія (Strategy) • Знімок (Memento) • Шаблонний метод (Template Method) • Одноразовий відвідувач • Null object • Специфікація • Feature toggle • Мультиметод • Перехоплювач (Interceptor) • Накопичувач (Collecting Parameter) • Слуга (Servant) |
---|
| Функційні | |
---|
| Патерни конкурентного програмування | |
---|
| Кешування | |
---|
| Архітектурні | Базові шаблони | |
---|
| Шаблони об'єктного структурування | |
---|
| Шаблони представлення | |
---|
| Шаблони предметно-орієнтованого проєктування | |
---|
| Шаблони сервісно-орієнтованої архітектури | |
---|
|
---|
| Архітектура корпоративних програмних додатків | Базові шаблони | Об'єкт-значення (Value Object) • Гроші (Money) • Особливий випадок (Special Case) • Супертип рівня (Layer Supertype) • Відокремлений інтерфейс (Separated Interface) • Шлюз (Gateway) • Розподільник (Mapper) • Реєстр (Registry) • Плагін (Plugin) • Набір записів (Record Set) • Заглушка сервісу (Service Stub) |
---|
| Шаблони логіки домену | |
---|
| Шаблони сховища даних | |
---|
| Шаблони об'єктно-реляційної поведінки | |
---|
| Шаблони об'єктно-реляційного структурування | Поле первинного ключа (Identity Field) • Розмітка зовнішніх ключів (Foreign Key Mapping) • Розмітка зв'язків таблиць (Association Table Mapping) • Відображення залежних об'єктів (Dependent Mapping) • Об'єднане значення (Embedded Value) • Серіалізований великий об'єкт (Serialized LOB) • Наслідування з однією таблицею (Single Table Inheritance) • Наслідування з таблицею для кожного класу (Class Table Inheritance) • Наслідування з таблицею для кожного конкретного класу (Concrete Table Inheritance) • Відображення із наслідуванням (Inheritance Mappers) • База даних звітності |
---|
| Шаблони обробки об'єктно-реляційних метаданих | Відображення на основі метаданих (Metadata Mapping) • Об'єкт-запит (Query Object) • Сховище (Repository) |
---|
| Шаблони вебпредставлення | |
---|
| Шаблони розподіленої обробки даних | |
---|
| Шаблони локального конкурентного програмування | Оптимістичне блокування (Optimistic Offline Lock) • Песимістичне блокування (Pessimistic Offline Lock) • Блокування із низьким рівнем деталізації (Coarse Grained Lock) • Неявне блокування (Implicit Lock) |
---|
| Шаблони збереження стану сеансу | Збереження стану сеансу на стороні клієнта (Client Session State) • Збереження стану сеансу на стороні сервера (Server Session State) • Збереження стану сеансу в базі даних (Database Session State) |
---|
|
---|
| Тестування | |
---|
| Інші | |
---|
| Див. також | |
---|
|