Мне удалось преобразовать большие динамические запросы в запросы linq. (1K строк +). Это очень хорошо работает для отчетов о сценариях, где у вас много динамической фильтрации и динамической группировки по относительно небольшому количеству таблиц. Создайте edmx для этих таблиц, и вы сможете написать отличные строго типизированные составные запросы.
Я обнаружил, что производительность действительно улучшилась, и в результате sql стал намного проще.
Я уверен, что вы получите такой же пробег с Hibernate - кроме возможности использовать linq ofcourse. Но, вообще говоря, если сгенерированный sql должен быть высоко динамичным, то он не является хорошим кандидатом для хранимого процесса. Написание динамического SQL внутри хранимой процедуры является худшим из обоих миров. Фреймворки генерации SQL были бы моим предпочтительным способом пойти сюда. Если вы копаете Hibernate, я думаю, это было бы хорошим решением.
При этом, если запросы являются просто строками с параметрами, просто бросьте их в сохраненный процесс и покончите с этим. - но тогда вы упускаете результаты, которые приятно работать с объектами.