Один из аргументов, которые я слышал в пользу sprocs над ОРМ является то, что они не хотят, чтобы люди делать , что они хотят в базе данных. Они запрещают выбор/вставку/обновление/удаление на самих таблицах. Каждое действие контролируется процедурой, которая проверяется администратором баз данных. Я могу понять, откуда взялось это мышление ... особенно, когда у вас есть куча любителей, все с их руками в ваша база данных.
Но времена изменились, и NHibernate отличается. Он невероятно зрелый. В большинстве случаев он будет лучше писать SQL, чем ваш DBA :).
Вы по-прежнему должны защищать себя от выполнения чего-то глупого. Как говорит человек-паук, «с большой силой приходит большая ответственность»
Я думаю, что гораздо более уместно предоставить NHibernate правильный доступ к базе данных и контролировать действия с помощью других средств, таких как ведение журнала аудита и регулярное резервное копирование. Если кто-то сделает что-то глупое, вы всегда сможете восстановиться.
Я предполагаю, что вы имеете в виду, насколько это возможно, используйте шаблоны Criteria и Expression вместо HQL. У меня сложилось впечатление, что HQL сам по себе параметризирован - есть ли у вас ссылка, которая показывает, как HQL можно использовать для инъекций? – 2008-09-24 01:30:22
HQL параметризуется. Вы просто не можете конкатенировать строки в своем HQL или выполняете то же самое, что и с SQL. – 2008-09-24 13:13:07