На самом деле я работаю над написанием инструмента ORM в .NET как стороннего проекта, чтобы развлечь меня.
SQL мертв для меня. Я ненавижу писать это, особенно когда это где-то в моем коде. Написание вручную запросов выбора / вставки / обновления / удаления для каждого объекта - пустая трата времени IMO. И даже не начинайте работать с NULL ("где col_1 =?" Против "где col_1 равен нулю") при динамической генерации запросов. Инструменты ORM могут справиться с этим для меня.
Кроме того, имея 1 место, где SQL может генерироваться динамически, можно надеяться, что это приведет к устранению атак внедрения SQL.
С другой стороны, я использовал Hibernate и абсолютно ненавижу его. В реальном проекте мы сталкивались с ограничениями, невыполненными битами и ошибками каждые несколько недель.
Сохранение стороны базы данных логики запросов (обычно в виде представления или хранимой процедуры) также имеет преимущество в доступности для настройки администраторами баз данных. Это была постоянная битва на моей последней работе с использованием Hibernate. Администраторы базы данных: "предоставьте нам все возможные запросы, чтобы мы могли настроить". Devs: "ну, я не знаю, потому что Hibernate сгенерирует их на лету. Хотя я могу дать вам немного HQL и отображение XML!" DBA: «Не заставляй меня бить тебя по лицу!»