ORM используются, когда у вас есть объекты (бизнес-объекты). Поэтому я предполагаю, что у вас есть приложение, с помощью которого вы создаете и управляете бизнес-объектами, которые в конечном итоге сохраняются в базе данных. Если у вас есть, то вы почти наверняка получили некоторое представление об отношениях и, возможно, многие из расчетов, которые вы собираетесь использовать в отчетах. Проблема с использованием SQL для прямого доступа к вашей базе данных для отчетов заключается в простоте обслуживания.
Обычно вы прикладываете много усилий, чтобы ваши бизнес-объекты скрывали любые детали своей базы данных. Вы реализуете бизнес-правила и выполняете общие вычисления в своих бизнес-объектах. Создайте общий язык для всех членов команды и т. Д. И т. Д. Затем вы используете ORM для сопоставления с базой данных и для этого используете Habanero или NHibernate или что-то подобное. Это все замечательно. Мы делаем все это во имя ремонтопригодности и это здорово. Вы можете перенести свое приложение, изменить свой дизайн и т. Д. И т. Д.
Теперь вы идете и пишете SQL для запуска отчетов, в то время как у вас есть сотни отчетов. Во-первых, они часто дублируют логику, которая у вас уже есть в ваших BusinessObjects (обычно без каких-либо тестов), и еще хуже, Бхам Дамб, извините за удобство сопровождения, теперь забывают о перемещении этого поля из одной таблицы в другую, забывают о разбиении этой таблицы на две, меняя эти отношения и т.д. есть несколько отчетов, которые неожиданно прервутся.
Проблема с запросами через ваши доменные объекты / бизнес-объекты просто связана с производительностью.
В итоге, если вы используете концепцию доменного управления или бизнес-объект, попробуйте использовать их для отчетов. (Скорее всего, вы будете запускаться напрямую из БД с использованием SQL или хранимых процедур из соображений производительности, но попробуйте сначала ограничить их использование вашими бизнес-объектами, а затем использовать SQL).
Другой вариант, конечно, заключается в использовании отдельной базы данных отчетов (как и некоторые концепции BI). Следовательно, отображение из вашей транзакционной базы данных в вашу базу данных отчетов находится в одном месте и может быть легко изменено в тех случаях, когда вы хотите изменить свой дизайн.
Объекты домена (бизнес-объекты) и ORM обладают всеми знаниями, позволяющими вам начать создавать высокопроизводительные запросы, которые выполняются непосредственно в базе данных при использовании терминологии домена. Будем надеяться, что они продолжат развиваться до такой степени, что это станет реальностью.
До тех пор, если вы используете Business Objects в своем приложении, попробуйте использовать их для создания отчетов, когда производительность является проблемой, прибегающей к SQL.