Имеет ли смысл использовать OR-mapper?
Я задаю этот вопрос о переполнении стека, потому что это лучшее место, которое я знаю, чтобы найти умных разработчиков, готовых высказать свою помощь и мнения.
Мои рассуждения таковы:
1.) Куда относится SQL?
a.) В каждом профессиональном проекте, над которым я работал, безопасность данныхбыло ключевым требованием.Хранимые процедуры предоставляют естественный шлюз для управления доступом и аудитом.
b.) Проблемы с приложениями в производстве часто могут быть решены между таблицами и хранимыми процедурами без выпуска новых сборок.
2.) Как я могу контролировать генерируемый SQL?Я доверяю деревьям разбора для генерации эффективного SQL.У меня довольно большой опыт оптимизации SQL в SQL-Server и Oracle, но я бы не чувствовал себя обманутым, если бы мне никогда не пришлось делать это снова.:)
3.) Какой смысл использовать OR-Mapper, если я получаю свои данные из хранимых процедур?
Я использовал шаблон хранилища с доморощенным общим уровнем доступа к данным.,Если необходимо кэшировать коллекцию, я ее кеширую.У меня также есть опыт использования EF в небольшом приложении CRUD и опыт в настройке приложения NHibernate с проблемами производительности.Так что я немного предвзят, но готов учиться.
В течение последних нескольких лет мы все слышали много респектабельных разработчиков, выступающих за использование определенных OR-Mappers (Entity-Framework, NHibernate и т. Д.)...).
Может кто-нибудь сказать мне, почему кто-то должен перейти на ORM для основной разработки крупного проекта?
edit: http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html, похоже, активно обсуждает эту тему, но она устарела.
Еще одно редактирование: кажется, все согласны с тем, что хранимые процедуры должны бытьиспользуется для корпоративных приложений, работающих в тяжелых условиях, благодаря их преимуществам в производительности и способности добавлять логику программирования ближе к данным.
Я вижу, что самым сильным аргументом в пользу OR mappers является производительность разработчика.
Я подозреваю, что основным мотивом для движения ORM является предпочтение разработчика по-прежнему оставаться независимым от настойчивости (не волнует, находятся ли данные в памяти [кроме кэширования] или в базе данных).
ORM, кажется, экономят время для локальных и небольших веб-приложений.
Возможно, лучший совет, который я получаю от client09: использовать настройку ORM, но использовать хранимые процедуры дляматериал с интенсивным использованием базы данных (AKA, когда ORM кажется недостаточным).