2009. 3. 17. 11:05

SQLJ란?

Sqlj 무엇인가?

개발자들은 기존의 C언어를 이용해서 Oracle Database 접근 하고자 가지 방식을 이용했다. 하나는 “Pro*C” 방식이고, 다른 하나는 “OCI Library” 바로 call하는 방식이었다. 가지의 차이점은 “Pro*C” 경우 Embedded Sql문을 이용하기 때문에 기존의 C문장에 다음과 같이 삽입함으로써 Oracle Database에서 데이터를 가공할 있었다.

EXEC SQL DELETE FROM dept WHERE deptno = :v_deptno

그러나 만약, OCI Library 직접 call해서 위와 같은 내용을 수행하려면 low level coding 필요한 , 이와 비교해 Java 경우에는 전자와 같은 방식이 “sqlj”방식이고 후자와 같은 low level programming “JDBC API” 이용하는 방식이라 있겠다.

Sqlj JDBC API 이용 방식의 장단점이 있겠지만, 다음 표로 간단히 확인해 보자.

 

 

SQLJ

JDBC API

코딩의

간결하다.

많은 line 필요

sql syntax 검사

Pre-compile time시에 결정

runtime시에 결정

Host 변수

사용 가능

사용 불가능

Dynamic Sql이용

불가능

사용 가능

 [1 SQLJ JDBC API 비교]

 

위에서 언급된 부분을 살펴보면 SQLJ JDBC API 바로 이용하는 것보다 코딩 line수가 적으며, 이것은 개의 column 값을 update 확실히 있다. SQLJ sql문을 pre-compile time시에 syntax objects 존재 여부 type 검사 등을 위해서 미리 database 접속을 검증을 한다. 그러므로, compile-time시에 에러를 발생시키고, runtime시에 에러를 줄임으로써, 개발자들로 하여금 빠르고 쉬운 debugging 가능토록 한다.

또한, SQLJ “Host variables” 이용할 있으므로, 문장이 상당히 간결해 있으나 JDBC API 이용할 경우에는 그렇지 못하다. 그러나, SQLJ 경우 compile시에 sql문이 완전히 조합되어 있어야 하므로, “dynamic sql”등을 사용할 수가 없다. 만약 dynamic sql 이용하고자 한다면, “JDBC API” 이용해서 Dynamic SQL 구현해야 한다.

정리를 하면, “Static SQL” 해당하는 부분은 SQLJ 이용하는 것이 좋고, Dynamic SQL 해당하는 부분은 “JDBC API” 이용함으로써 개발 생산성과, rumtime시의 performance 극대화할 있겠다.