A Java nyelv hálózati lehetőségei miatt ideálisan
megfelel kliens-szerver architektúrájú adatbázis-kezelő programok
létrehozására; a java programok kommunikálni tudnak a legkülönfélébb
adatbázisokkal is, tehát segítségével megoldható az
adatbázis-hozzáférés. Ezen
kommunikáció lehetőségét a JDBC – Java DataBase Connectivity –
biztosítja. A JDBC egy programozói interfész (API) SQL – Structured Querry
Language - utasítások végrehajtására. A JDBC két részből áll: ·
JDBC alap (Core) API: az adatbázis eléréséhez szükséges alapvető
típusokat írja le. Ezeket a java.sql standard Java csomag tartalmazza. ·
JDBC standard kiterjesztés (Extension) API: további haladó szintű JDBC típusokat ír le.
Ezeket a javax.sql csomag tartalmazza. A JDBC API szolgáltatásait három csoportba lehet
sorolni: ·
összekapcsolódás relációs adatbázissal ·
SQL utasítások végrehajtása ·
SQL lekérdezések eredményeinek feldolgozása A JDBC használatával a Java adatbázis-kezelő
programjaink nemcsak platform függetlenekké hanem még
adatbázis-kezelőktől függetlenekké is válnak. |
A JDBC kétféle adatbázis-elérési
modellt támogat: a kétrétegű- valamint a háromrétegű modellt. 1) A kétrétegű
modell: a program közvetlenül az adatbázis-kezelő rendszerrel
kommunikál. Maga az adatbázis akár másik gépen is elhelyezkedhet, mint ahol a
program fut, az adatforgalom pedig hálózaton keresztül folyik. Ezt az esetet
nevezik kliens-szerver konfigurációnak, ahol az adatbázist tároló gép a
szerver, a programot futtató gép pedig a kliens. 2) A háromrétegű
modell: a program adott protokollon keresztül egy
"középső" szolgáltató réteggel kommunikál. Ez a réteg a
programtól kapott parancsokat értelmezi és átalakítja, majd továbbítja azokat
az adatbázis-kezelő rendszerhez. A lekérdezési eredményeket a program
szintén a szolgáltató rétegen keresztül kapja meg. A középső réteg
bevezetése lehetővé teszi az adatbázis hozzáférések könnyű
ellenőrzését és optimalizálását is. A szolgáltató réteg Java
implementációja esetén az adatbázissal JDBC-n keresztül történik a
kommunikáció. |
A JDBC hívások végrehajtásakor mindig fizikailag is fel
kell venni a kapcsolatot a használt adatbázissal. Mivel ezen adatbázis akármilyen
típusú (azaz az adatbázis-kezelő bármilyen szoftver) lehet, ezért minden
adatbázis-kezelő esetén külön biztosítani kell a JDBC hívások
megfelelő értelmezését és kiszolgálását. Ezt a feladatot JDBC programok
végzik el. Egy JDBC meghajtó-program valósítja meg a JDBC
hívásokat egy adott adatbázistípushoz a DRIVER interfészt implementálva. A
meghajtó-programok az alábbi négy csoportba sorolhatóak be: ·
JDBC-ODBC áthidaló program + ODBC meghajtó-program ·
JDBC – saját API áthidaló – meghajtó-program ·
JDBC – hálózati protokoll Java meghajtó-program ·
JDBC – saját protokoll Java meghajtó-program Ezek közül platform- és
adatbáziskezelő-független a JDBC – hálózati protokoll Java
meghajtó-program és a három rétegű adatbázis-kezelési modell, ahol a
kiszolgáló réteg adatbázis-kapcsolatát a kétszintű adatbázis-elérési
modellnek megfelelő meghajtó-programokkal lehet megvalósítani. |
Amint azt már említettem, a JDBC API típusait a java.sql és a javax.sql csomagok tartalmazzák,
melyek már a JAVA 2 részei, ezért a JDK 1.2-es változata már tartalmazza
őket. Korábbi verziók esetén külön kellett ezen csomagokat installálni. A JDBC egyik legkecsegtetőbb felhasználói területe
a böngészőprogramokkal történő adatlekérdezés és módosítás
appletek/szervletek segítségével. Szervletek esetén csak maga a szervlet
használja a JDBC-t adatbázis-elérésre a szerveroldalon, a
böngészőprogram dinamikusan generált HTML oldalak, illetve HTML
űrlapok formájában olvashatja, illetve módosíthatja az adatokat.
Appletek használatakor a felhasználó közvetlenül hozzáférhet az adatbázishoz
JDBC-n keresztül. Ennek egyetlen feltétele, hogy a kliens-oldalról
elérhető legyen a használt adatbázis meghajtó-program kódja. Mivel egy
hálózati applet alapértelmezés szerint csak a kódját tartalmazó géppel hozhat
létre hálózati kapcsolatot, ezért csak olyan adatbázissal kommunikálhat,
amely ugyanazon a szerveren fut, mint ahonnan az applet kódja is letöltésre
került. Többrétegű elérési modell esetén csak a kiszolgáló rétegnek kell
ugyanazon a gépen lennie, mint az applet kódjának, maga az adatbázis akár más
gépen is lehet, az applet mégis képes lesz azt – a kiszolgáló rétegen –
elérni. |
Egy applikációban használt osztályok és interfészek,
amelyeket a JDBC használ megtalálhatóak a következő ábrán: Egy JDBC alkalmazás egy vagy több drivert is használhat
a java.sql csomagból a DriverManager osztály
segítségével. A driverek adatbázis specifikusak, tehát minden adatbázis más
meghajtót használ. Épp ezért ugyanazon az applikáción belül dolgozhatunk
különböző adatbázisokkal, tehát több driverrel is. Szükségünk lehet egy
olyan driverre, amely egy távoli gépen található Oracle adatbázissal
kommunikál és egy másik driverre, amely a lokális ODBC kapcsolatot képviseli
és egy SQL szerverrel kommunikál. Egy applikációban az adatbázissal való
kommunikálás a következő lépéseket követeli meg: A DriverManager-től egy adatbázis-specifikus drivert kérünk A specifikus driver létrehozza a kapcsolatot az adatbázissal
és egy Connection típusú objektumot ad vissza A Connection típusú objektum segítségével létrehozunk egy Statement objektumot, amely
egy SQL kérést is tartalmaz az adatbázis felé A Statement objektum az eredményeket egy ResultSet objektumban adja vissza |
|
Amint azt a fentiekben is láthattuk egy JDBC
meghajtó-program valósítja meg a JDBC hívásokat egy adott adatbázistípuson,
ennek segítségével jön létre a fizikai kommunikáció a program és a
megfelelő adatbázis között. Egy meghajtó-programnak a Driver interfészt kell
implementálnia. Meghajtó-program
kiválasztása A felhasználni kívánt meghajtó-program kiválasztása
történhet a szükséges meghajtó-program közvetlen megnevezésével vagy
automatikusan a DriverManager osztály segítségével. Ez az osztály a megfelelő
meghajtó-program kiválasztását és használatát segíti. Nyilvántartja a
pillanatnyilag használható összes regisztrált meghajtó-programot, és az adatbázis-kapcsolat
kérésekor a kívánt típusú adatbázist kezelő meghajtó-programot fogja
aktiválni. Ugyanakkor a meghajtó-programok kapcsolattartási idejét is
ellenőriztetni lehet vele, és a hibaüzenetek nyomon követéséért is
ő a felelős. Meghajtó-programok
regisztrálása A DriverManager osztály kezeli a regisztrált meghajtó-programok
listáját. Egy meghajtó-program rendszerint a betöltése után automatikusan,
statikus inicializátor segítségével regisztráltatja magát, a DriverManager
osztály registerDriver metódusával, ezért a felhasználónak csak a
megfelelő meghajtó-program betöltéséről kell gondoskodnia. A
betöltést két módszerrel lehet megvalósítani: · a meghajtó-program
osztályának direkt betöltése a Class.forName statikus metódussal, amely a paraméterként kapott
nevű osztály dinamikus betöltését végzi el Pl: Class.forName (”com.sybase.jdbc.SysDriver”) Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”) · a jdbc.drivers
rendszerparaméter beállításával. Ezen rendszerparaméter a meghajtó-programok
neveinek kettősponttal elválasztott listáját tartalmazza. A DriverManager
osztály inicializálásakor automatikusan betölti ezen rendszerparaméterben
felsorolt meghajtó-programokat. E két módszer közül az elsőnek a használata
javasolt, mivelhogy az appletek nem állíthatnak be rendszerparamétereket, és
a DriverManager csak egyszer, az inicializáláskor veszi figyelembe a jdbc.drivers
értékét. |
Finta Anna - Mária |