Задать вопрос
Twitt
@Twitt

Какие отличие между двумя подходами для работы с базой данных?

Вопрос очень нубский, но я всё никак не могу понять, очень хотелось бы понятным языком получить ответ
В общем: пишу на фреймворке Yii2, данные мы можем из модели получать с помощью ActiveRecord вот так:
News::find()->where(['moderate' => 1])->orderBy(['id' => SORT_DESC])->all();

Вот это, как я знаю, называется ORM.
А можно получать вот так:
$posts = Yii::$app->db->createCommand('SELECT * FROM news WHERE moderate =:moderate ORDER BY DESC')->bindValue(':moderate', 1)->queryAll();

И это, по моему, DAO

На мой взгляд, первый вариант просто автоматически удобнее по синтаксису, с ним проще работать, и не надо заморачиваться с bindValue, по скольку ORM берет на себя всё это. Еще недавно говорили, мол, работать с БД с помощью SQL это уже каменный век

Так вот, поясните, пожалуйста, в каких ситуациях вообще нужно использоваться DAO, когда есть такая удобная штука как ORM? По-любому отличия какие то есть, и уверен что они значительные, но я никак не понял их еще.
  • Вопрос задан
  • 494 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
достаточно двух фактов:
1) ORM очень вписывается в объектно-ориентированный стиль, со всеми его плюшками, в том числе миграциями
2) скорость выполнения ORM на 20-500% (обычно ближе ко второй цифре) медленнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы