|
|
Компьютеры - SQLJ - Особенности SQLJ05 июня 2011
Оглавление: 1. SQLJ 2. Пример кода 3. SQLJ и JDBC 4. Синтаксис 5. Взаимодействие с JDBC 6. Особенности SQLJ 7. Недостатки SQLJ
Как уже упоминалось ранее, сравнивать SQLJ как технологию проще всего с аналогичной Java-ориентированной технологией того же назначения, а именно с JDBC. Ситуация усложняется тем, что эти технологии не параллельны и не вполне взаимозаменяемы, а находятся друг над другом архитектурно.
- Запрос одинакового назначения, записанный в JDBC-вызовах и в SQLJ-директиве, в большинстве случаев будет более компактно записан в тексте программы именно во втором случае, что уменьшает размер листинга и вероятность ошибки, связанной со сборкой итоговой строки запроса из небольших фрагментов;
- Любая SQLJ-директива на этапе компиляции разбирается и проверяется препроцессором, следовательно, все ошибки синтаксиса выявляются ещё на этом этапе, в отличие от JDBC, где контролируется правильность конструкций только с точки зрения синтаксиса Java за разбор и правильность собственно запроса отвечает уже СУБД, что, естественно, приводит к тому, что ошибки такого рода будут выявлены уже на этапе запуска;
- Собственно сам препроцессор не входит в JDK; он и необходимые для его работы библиотеки обычно предоставляются производителем СУБД. Это закономерно как показано выше, SQLJ гораздо более близок к СУБД, чем собственно к языку Java; более того, препроцессор должен учитывать особенности SQL-синтаксиса «своей» СУБД;
- В большинстве случаев особенно это касается часто выполняющихся сложных запросов, работающих с большими массивами данных, SQLJ-директива будет выполняться в среднем быстрее аналогичного набора JDBC-вызовов. Это связано с тем, что план для соответствующего запроса в случае SQLJ-директивы будет строиться только один раз, а затем использоваться повторно, в отличие от JDBC, где построение плана будет осуществляться при каждом вызове;
- Создаваемый при трансляции SQLJ-директивы план запроса при необходимости может быть подвергнут настройке со стороны пользователя; в случае JDBC такая возможность по понятным причинам отсутствует;
- Если запрос требует значительных изменений в каждом конкретном случае, то проще использовать JDBC, так как преимуществ в использовании SQLJ здесь нет;
- Так как при использовании JDBC нет надобности в дополнительном этапе обработки кода трансляции, то процесс компиляции в этом случае будет быстрее.
Просмотров: 5745
|