Sunday, July 13, 2008

SQLJ vs JDBC <==> Static SQL vs Dynamic SQL

Java geliştirme ortamında veritabanına bağlanmanın 2 yolu vardır.

  1. JDBC ile

  2. SQLJ ile

SQLJ kolay kullanılırlığı, sağladığı yüksek performans ve daha güvenli olması nedeniyle tercih sebebidir.

SQLJ Geliştirme Zamanı:

SQLJ ile uygulama geliştirildiği zaman 3 ana evre vardır:

  1. Translator(sqlj):

SQLJ yapılan sentaks hataları derleme sırasında farkedilebilmektedir. Böylece hata ayıklamak runtime kısmına kalmaz. Bu evrede translator aracılığıyla sqlj kaynak kodu doğrultusunda Java dosyası oluşturulur.

  1. Profile Customizer(db2sqljcustomize): DB2 ile uyum sağlayan profilleri oluşturur. Online check özelliği sayesinde DB2 üzerinden sql sorgusunun doğruluğunu denetler(ilgili schema, tablo adları, sütun adları vs). Varsayılan ayar olarak db2sqljbind'ı çağırır.

  2. Profile Binder(db2sqljbind): Profile binder db2sqljcustomize tarafından otomatik çağrılabileceği gibi, isteğe bağlı da çağrılabilir. Bu etapta yukardaki evrelerde hazırlanan sorgu(lar) DB2 üzerine paket olarak gömülür.

SQLJ evreleri:

SQLJ Çalışma Zamanı:

SQLJ uygulamaları çalışma zamanında JDBC driver'ı aracılığıyla DB2'ya bağlanır. Uygulama içerisinde gömülü olan profil bilgisi (Profile Customizer evresinde oluşturulan) doğrultusunda DB2 içerisine gömülmüş olan ilgili paket kullanılır.

SQLJ'nin JDBC Karşısındaki Avantajları:

  1. Güvenlik

SQLJ kullanılan uygulamalar sonunda DB2 üzerine gömülen paketler aracılığıyla çalıştırılan sql sorguları statik sqldir. Statik sqlde yetkiler paketi yaratan kullanıcıya bağlıdır. Herhangi bir kullanıcı, DB2 üzerine gömülen paketlere erişemez. Erişmek için paketi yaratan kullanıcı yetkilerine sahip olunması gerekir.

  1. Performans

SQLJ kullanılan uygulamar sonunda DB2 üzerine paketler gömülürken içerisinde bulunan SQL sorguları optimize edilerek paket haline getirilmiştir. Dolayısıyla Dynamic SQL'de olduğu gibi, her SQL sorgusu esnasında önce sentaks kontrolu yapılması, ardından ilgili tablolar üzerinde authentication kontolu, ardından SQL sorgusunun optimize edilmesi etapları her seferinde tekrarlanmaz. Böylece SQLJ ile sorgulara kısa sürede yanıt alınır.

Statik SQL'de sorgu cümlesi bellidir. Yalnızca dışardan alınan parametreler değişiklik gösterir. Oysaki JDBC'de sorgular çalışma zamanına kadar belli olmadığı, yani dinamik olduğu için yukarda saydığımız etaplar her sorguda tekrarlanır. Bu yüzden de sorgulara uzun sürede yanıt alınır.

JDBC'de olası SQL hataları anca çalışma zamanında belli olur, oysaki SQLJ derleme sırasında bu hataların ayıklanmasını kolaylaştırır ve online check ile de çalışma zamanında karşımıza sorun çıkmamasını sağlar.

  1. Sentaks

SQLJ kolay bir sentaksa sahiptir. Bir kod SQLJ ile birkaç satırda ifade edilebilinirken, aynı kod JDBC ile bir sayfa uzunluğunda olabilir. Kısa kodun avantajı okunabilirliğin de rahat olmasıdır. Bu yüzden programcılar SQLJ'yi tercih ederler.


No comments: