Я могу относиться к вашему чувству желания полностью контролировать ваш SQL.Я сам исследовал использование ORM, и хотя я не могу изложить дело почти так же хорошо, как это сделал marc_s, я подумал, что могу добавить еще пару пунктов.
Я думаю, что смысл ORM заключается в том, чтобысместить акцент с написания кода на SQL и DAL и вместо этого уделить больше внимания бизнес-логике.Вы можете быть более гибкими с помощью инструмента ORM, потому что вам не нужно реорганизовывать свою модель данных или хранимые процедуры каждый раз, когда вы изменяете свою объектную модель.На самом деле ORM, по сути, предоставляет вам уровень абстракции, так что вы можете потенциально вносить изменения в свою схему, не влияя на ваш код, и наоборот.ORM может не всегда генерировать наиболее эффективный SQL, но вы можете выиграть в ускорении разработки.Однако для небольших проектов преимущества ORM могут не стоить дополнительного времени, потраченного на настройку ORM.
Я знаю, что это не отвечает на ваши вопросы.
На ваш 2ndвопрос , мне кажется, что многие разработчики SO, обладающие большим опытом в SQL, все еще выступают за использование и сами используют инструменты ORM, такие как Hibernate, LINQ to SQL и Entity Framework.На самом деле, вам все равно иногда нужно знать SQL, даже если вы используете ORM, и это, как правило, более сложные запросы, поэтому ваша теория о том, что ORM в основном "для программистов, которые не знают SQL" может быть не так.Кроме того, вы получаете кеширование со своего уровня ORM.
Кроме того, Джефф Этвуд, ведущий разработчик SO (этот сайт здесь), утверждает, что он любит SQL (и, держу пари, он очень хорош в этом)и он также старается избегать добавления дополнительных технологий в свой стек, но все же он решил использовать LINQ to SQL для сборки SO. Уже много лет назад он утверждал, что "хранимые процедуры должны рассматриваться как язык ассемблера баз данных: для использования только всамые критические ситуации с производительностью. "
На ваш 1-й вопрос есть еще одна статья из блога Джеффа Этвуда, в которой говорится о различных способах (включая использование ORM) для решенияпроблема несоответствия объектно-реляционного импеданса , которая помогла мне взглянуть на вещи в перспективе.Это также интересно, потому что его мнение об ORM, должно быть, изменилось с тех пор.В статье он сказал, что вы должны «либо отказаться от реляционных баз данных, либо отказаться от объектов», , а также «Я склонен ошибаться на сторонелагерь "база данных как модель". " Но, как я уже сказал, некоторые из пунктов пули помогли мне понять ситуацию.