A perzisztencia réteg megvalósítása a Hibernate felhasználásával
A perzisztencia réteg megvalósítása a Hibernate felhasználásával
Fájlok
Dátum
2006-07-07T08:56:29Z
Szerzők
Csikós, Zoltán
Folyóirat címe
Folyóirat ISSN
Kötet címe (évfolyam száma)
Kiadó
Absztrakt
A Hibernate egy szabadszoftver, mely tulajdonképpen egy köztes réteg az alkalmazás és az adatbázis meghajtó között, mely kiküszöböli SQL parancsok használatát, az objektumok és táblák közötti kétirányú leképezést végzi. A továbbiakban szó lesz objektumok, táblák készítéséről, a leképzés leírásáról és az API megismeréséről. A diplomamunka keretében egy webes felületű, jsp oldalakkal megoldott on-line sakk került megvalósításra. A perzisztencia fogalma, majd a Hibernate rövid bemutatása után, a megvalósított on-line sakk alkalmazással ismerkedhetünk meg.
Aki használt már relációs adatbázist Java programból, az tudja, hogy legegyszerűbben ez a JDBC technológiával oldható meg, de sajnos ebben az esetben elkerülhetetlenné válik, hogy a Java kód keveredjen az SQL utasításokkal, hiszen a metódusoknak String paraméterként kell megadni magát az SQL utasítást.
Ez a megoldás nem illik bele az objektum-orientált szemléletbe, két nyelvet kever, ami nem ajánlott, sem ebben az esetben, mikor Java és SQL keveredik, sem pl. webes alkalmazások fejlesztésekor, a Java és HTML esetén, sőt lehetőség van mindhárom keverésére. Ez csökkenti az átláthatóságot, és nehezebben is módosítható. Erre a problémára több megoldást is létezik, egyrészt az SQL parancsok külön választhatóak külön fájlba, a J2EE esetén az JavaBean-ek (pontosabban Enterprise JavaBeans-ek - EJB-k) perzisztenciáját az ún. EJB konténerek kezelik, mely az alkalmazásszerver szerves része. Fejlesztők rendelkezésére állnak már objektum-orientált adatbázisok is, melyek kiforrottsága még nem áll olyan magas szinten, mint a relációs adatbázisoknak. Egyszerűbb megoldás J2SE alkalmazások írása esetén egy objektum-relációs híd használata.
A szoftverfejlesztés fejlődésével egyre inkább jelennek meg az olyan technológiák, melyek a perzisztencia kezelésére vagy nem relációs adatbázis-kezelőt használnak, vagy csak magasabb szintű felületet nyújtva használják azt a háttérben. Ez nem véletlen, hiszen az objektum orientált szemlélet lényegesen eltér a relációs adatmodelltől. Ennek ellenére az esetek 99%-ában mégis valamilyen objektum orientált fejlesztőkörnyezetet és relációs adatbázis-kezelőt alkalmaznak.
Persze a relációs adatbázisok kezeléséhez különböző „objektum orientált” interfészek léteznek, mint az ODBC (Open Database Connectivity), a JDBC vagy az ADO (Active Data Objects). Mindezeknek közös problémája, hogy a különböző wrapper osztályok segítségével csak azokat az alacsony szintű szolgáltatásokat vehetjük igénybe, amiket a relációs adatbázis-kezelő a query-ken keresztül biztosít a számunkra. Ezért az objektumorientált és a relációs szemlélet közötti különbségből adódó nehézségeket a programozónak minden esetben magának kell kezelnie. Ez fölöslegesen nagy feladatot állít a fejlesztő elé, így kevésbé tud magára a megoldandó feladatra koncentrálni.
Az elmúlt pár évben különböző módszerek kezdtek elterjedni a probléma megoldására. Azokban az esetekben, ha összetett, változatos szempontok szerinti lekérdezésekre nincs szükség, a probléma tökéletesen megoldható az objektum orientált adatbázis-kezelők használatával. Ellenkező esetben a legelterjedtebb megoldás jelenleg a java entity beanek alkalmazása, ahol a perzisztencia kezelésének módjától függetlenül használhatunk perzisztens objektumokat. Ebben az esetben viszont ezen perzisztens osztályok megvalósítása a hosszadalmas feladat. Pedig azok a technológiák, melyek az objektum orientált nyelv mellett egy keretrendszer is tartalmaznak, ennél sokkal nagyobb automatizmust is lehetővé tehetnének.
Leírás
Kulcsszavak
Hibernate, perzisztencia, on-line sakk