Мое текущее рабочее место использует стандартное соединение Spring/Hibernate/JSP для обслуживания содержания его клиенту Flex через XML. Существует много путей, которыми получают доступ к данным, но самый распространенный - через прямые вызовы SQL к базе данных и ручное преобразование в XML.
Проблема состоит в том, что, поскольку приложение стало больше, SQLs стал намного более сложным и твердым поддержать. Как будто не было достаточно трудно поддержать SQLs, которые были созданы с помощью StringBuilders, теперь это еще хуже, что SQLs создаются динамично с помощью многих если операторы и циклы.
Я знаю, что обычно правильный способ пойти состоит в том, чтобы выбрать использование объектов, в спящем режиме запросы и объекты. Однако в некоторых наших запросах результаты не могут быть отображены на сингле, в спящем режиме объект, и я боюсь, что прямой SQL должен использоваться.
Каков был бы правильный способ пойти об этом? Существует ли способ сделать динамические запросы SQL более четкими? Существует ли способ сделать, он с В спящем режиме объекты?
Я сожалею об абстрактной природе этого вопроса. Я надеюсь, что у Вас есть хороший вход, тем не менее, ;)
Цените свои комментарии!
Да, вы можете - синтаксис T-SQL такой же, как в любом другом вызове кроссных баз данных (например, в хранимой процедуре).
Для ссылки на ваши таблицы во второй базе данных вам просто нужно:
[База данных]. [Схема]. [TableName]
Так что вы получите что-то вроде
CREATE VIEW [dbo].[YourView]
as
select
a.ID,
a.SomeInfo,
b.SomeOtherInfo
from TableInA a
join DatabaseB.dbo.TableInB b
on -- your join logic goes here
, обратите внимание, что это будет работать только на том же сервере - если ваши базы данных находятся на разных серверах, вам понадобятся Создать связанный сервер.
-121--1355460-HQL поддерживает запросы, которые извлекают более одного объекта. Присоединения также поддерживаются. Например:
SELECT new com.package.model.SearchResultEntry(product, price) FROM Product product,
IN(product.variantPrices) price WHERE ....
Вышеупомянутое возвращает новый объект (не-объект!), Который состоит из двух объектов - продукта и цена. Вы также можете использовать список
, чтобы поставить разные объекты из того же результата.
Дайте в этом учебном пособии .
Сделайте эти запросы с динамическими параметрами и используйте наиболее подходящие классы для хранения их как @NamedQueries
Вы можете рассмотреть возможность перемещения некоторых из SQL-логики в базу данных и доступ к данным через представления: что представляет свои собственные проблемы, конечно (у вас сейчас есть бизнес-логика в двух местах), но может Стоять рассмотрения.
другое использование - простые счетчики, такие как:
perl -e 'foreach (1.. 100) {print «$ _\n»} '
В языковых расширениях GNU C приведение к объединению помечается как расширение к стандарту C. Так что, скорее всего, вы не найдете его в C99 или любом другом стандарте C. Компилятор IBM C также поддерживает это расширение.
-121--2415539-Предполагая, что вы не можете сделать то, что вам нужно в HQL посмотрите на ibatis Это позволит вам настроить сопоставления с помощью определенных SQL запросов и хранимых процедур. Это также будет еще одна зависимость от вашего проекта, так что учитывайте это также.