Что такое механизм сохранения (например, ActiveRecord)? Преимущества? Недостатки? - PullRequest
2 голосов
/ 21 декабря 2009

Я слышал все эти разговоры о механизме персистентности Rail (ActiveRecord). Я сделал поиск по нему, и я не мог получить четкое представление о том, что он сделал. Казалось, что это было сопоставление объектов с базой данных, но это все, что я придумал. Если да, то сохраняют ли они объекты в базе данных, чтобы сохранить постоянство? Каковы преимущества использования этой модели? Какие недостатки?

Спасибо! Мэтт Мюллер

1 Ответ

3 голосов
/ 21 декабря 2009

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

* ** 1003 тысяча два * Пример
Database Table              Active Record Class
-----------------------     --------------------------
People                   >  Person
-----------------------     --------------------------
FirstName : varchar(40)  >  string FirstName
LastName  : varchar(40)  >  string LastName

Фреймворк предоставляет вам общие методы для извлечения данных независимым от базы данных способом, который прекрасно интегрируется с языком программирования.

people = Person.GetAll()

, который генерирует и выполняет что-то вроде:

SELECT FirstName, LastName FROM People

Что он делает - читает структуру класса AR и выводит имена столбцов. Полученные данные также сопоставляются с классом таким же образом.

Основным преимуществом этого является то, что вы удаляете зависимость от одного ядра базы данных. Например, если вы решите переключиться с MySQL на SQLite, правильно кодированная среда AR может сделать это практически без изменений в существующем коде.

Недостатком, однако, является то, что вы находитесь в зависимости от конкретной AR-платформы, которую вы используете. Если он не генерирует правильный SQL в определенной ситуации или не поддерживает определенную функцию, вам, возможно, придется самостоятельно написать его, что противоречит цели независимости базы данных.

...