Объясните отличия подходов Active Record и Data Mapper при работе с базами данных.
Ответ от нейросети
sobes.tech AI
Active Record и Data Mapper — два популярных паттерна для работы с базами данных, отличающиеся ответственностью объектов:
-
Active Record: объект модели содержит как данные, так и методы для сохранения, обновления и удаления этих данных в базе. То есть, модель напрямую связана с таблицей базы данных и умеет сама себя сохранять.
Пример: класс User имеет методы save(), update(), delete(), которые взаимодействуют с БД.
-
Data Mapper: разделяет бизнес-логику и логику доступа к данным. Объекты модели не знают о базе данных, а отдельный слой (mapper) отвечает за преобразование объектов в записи базы и обратно.
Это повышает тестируемость и позволяет менять слой хранения без изменения модели.
Пример:
// Active Record
class User {
public $id;
public $name;
public function save() {
// SQL insert/update
}
}
// Data Mapper
class User {
public $id;
public $name;
}
class UserMapper {
public function save(User $user) {
// SQL insert/update
}
}
Active Record проще и быстрее для небольших проектов, Data Mapper лучше для сложных систем с четким разделением ответственности.