Я работаю над веб-приложением, принадлежащим производителю автомобилей, разработанным в Spring-Hibernate с базой данных MS SQL Server 2005.
Существует три вида использования:
1) Через это приложение конечные пользователи могут запросить создание автомобиля, автобуса, грузовика и т. Д. Через веб-интерфейсы. Когда пользователь входит в систему, отображается форма HTML для получения технических характеристик автомобиля, например, если кто-то хочет запросить автомобиль, он может указать данные о марке / модели двигателя, шинах, деталях шасси и т. Д. И отправить форму. Я использую Hibernate для сохранения, то есть у меня есть Car Car Entity, который сохраняется в БД для каждого такого запроса.
2) В этой части приложения рассматривается создание отчетов. Эти отчеты в основном делятся с количеством запросов, полученных за день, и сводкой. В некоторых отчетах рассчитывается время выполнения отдельных запросов на создание транспортных средств.
Я использую простые вызовы JDBC с Preparedstatement (если отчет может быть сгенерирован с помощью SQL), Callablestatement (если отчет достаточно сложный и требует процедуры / функции БД для получения всех деталей) и HibernateCallback для выполнения SQL / процедур и вывод информации на экран.
3) Поиск: эта часть приложения позволяет пользователям ensd искать данные различных запросов, например, сколько транспортных средств было запрошено за год и т. Д. Я использую процедуру DB с CallableStatement .. Как только снова выполняю эти процедуры в HibernateCallback , заполнение и возврат результатов поиска по GUI в POJO.
Я использую собственный SQL в (2) и (3) выше, потому что для целей отчетности / поиска структура данных отчета, отображаемая на экране, не соответствует ни одной из моих сущностей. Например, сущность Car имеет более 100 атрибутов сама по себе, но для целей отчетности мне не нужно более 10 из них ... так что я просто загружаю все 100 атрибутов, что не имеет никакого смысла, так почему бы не использовать простой SQL и получить только данные, необходимые для отображения на экране.
Точно так же для поиска мне пришлось писать процедуры / функции, потому что алгоритм поиска не прост, и Hibernate не имеет возможности написать что-то вроде хранимой процедуры.
Это нормально работает для прото-типа, однако я хотел бы знать,
а. Если мой подход к использованию собственных SQL-процедур и процедур БД подходит для случаев 2 и 3, основан на моем мнении.
б. Также является ли правильное выполнение SQL-запросов в HibernateCallback?
Нужна помощь специалиста.