Мое мнение о том, что ВСЕ запросы выполняются с помощью хранимых процедур
Точка 1:
Это было ДЕЙСТВИТЕЛЬНО полезно в те дни, когда наличие слоя DAL было не очень распространено, потому что выполнение этого с помощью SP обеспечивало ту же уверенность, что изменения в вашей БД никогда не повлияют ни на какие слои, кроме 1.
В настоящее время, когда уровни DAL являются нормой, вы получаете такое же разделение, используя DAL, и я на самом деле не вижу слишком много дополнительной ценности для наличия SP в этом отношении. (Наличие слоя DAL предполагает, что ваши запросы SQL находятся только в вашем DAL и больше нигде)
Точка 2:
Кроме того, в более старых базах данных (по крайней мере, SQL Server 7 и, возможно, даже в 2000) было отмечено повышение производительности из-за кэширования планов выполнения SP, когда выполнение прямого SQL было бы медленнее из-за этого.
В настоящее время большинство баз данных также кэшируют специальные запросы, и это преимущество больше не является критерием.
Точка 3:
Кроме того, в старых системах в базу данных встраивалось много бизнес-логики.
Внедрение бизнес-логики в базу данных означало написание ДЛИТЕЛЬНЫХ и сложных процедур. Таким образом, поскольку процедуры в любом случае присутствовали, стало полезно сделать их согласованными, сказав «давайте сделаем все процедурой»
В настоящее время большинство приложений воздерживаются от размещения бизнес-логики в любом месте базы данных.
Поэтому весьма вероятно, что в отличие от SELECTS операторы CRUD обычно будут очень простыми и понятными в большинстве объектно-ориентированных систем.
Резюме: Лично я считаю, что форсирование SP для каждого запроса старомодно. нет вреда . Но мне очень трудно думать о какой-либо реальной пользе от этого, если у вас есть уровень DAL / Business и механизм БД, достаточно хороший для кэширования ваших планов запросов для ваших запросов