Objektum-relációs leképzés
Ezt a szócikket át kellene olvasni, ellenőrizni a szöveg helyesírását és nyelvhelyességét, a tulajdonnevek átírását. Esetleges további megjegyzések a vitalapon. |
Az objektum-relációs leképzés (angolul Object-Relational Mapping) egy programozási technika adatok konvertálására nem kompatibilis típusos rendszerek és objektumorientált programozási nyelvek között. Lényegében egy „virtuális objektum-adatbázist” hoz létre, amit a programozási nyelvben használhatunk. Vannak ingyenes és fizetős programcsomagok is, amelyek megvalósítják az ORM-et, azonban néhány programozó inkább elkészíti a saját ORM eszközét.
Áttekintés
[szerkesztés]Az adatkezelési feladatot az objektumorientált programozásban általában az objektumok módosításával végezzük, amelyek szinte soha nem skalár változók. Például tekintsünk egy telefonkönyv bejegyzést, amely egy személyt reprezentál egy vagy több telefonszámmal, esetleg címmel is. Objektumorientált megközelítésben ezt egy "Személy" objektummal tudjuk implementálni, melynek attribútumai lehetnek: a "Személy" neve, címe, telefonszámainak listája. A telefonszámok listája "Telefonszám" objektumokat tárolhat és így tovább. A telefonkönyv bejegyzéseit a programozási nyelv objektumként kezeli. A bejegyzés-objektumhoz különböző metódusok tartozhatnak (pl. getterek, setterek).
Azonban a legtöbb népszerű adatbázis, mint az SQL DBMS, csak skalár értékeket (pl. stringeket, egészeket) tud tárolni és kezelni. A programozó vagy csak egyszerű értékű változókat használhat, vagy el kell készítenie az objektumokat egyszerű értékek halmazává konvertáló metódusokat, hogy azok az adatbázisban tárolhatóak legyenek. Az ORM az utóbbi megoldást valósítja meg.
A probléma lelke az objektum logikai reprezentációjának átalakítása atomi formára, amely alkalmas az adatbázisban való tárolásra. A cél az, hogy az objektumok tulajdonságait és kapcsolatait megőrizzük, így helyesen vissza tudjuk tölteni az adatbázisból amikor szükséges. Amikor a tároló és visszatöltő funkcionalitás megoldott, akkor azt mondjuk, hogy az objektum perzisztens.
Összehasonlítás a hagyományos adatelérési technikákkal
[szerkesztés]Összehasonlítva a hagyományos módszerrel, az ORM gyakran lecsökkenti a megírandó kód mennyiségét, objektumorientált nyelv és relációs adatbázis közötti adatcsere esetén.
Az ORM hátrányos azokon a területeken, amelyeken az adatbázis specifikus technikák jelentősen optimalizáltak. A legtöbb ORM eszköz nem teljesít jól nagy mennyiségű adat törlése esetén, vagy adattáblák összekapcsolásában. A tárolt eljárások esetleg jobban teljesítenek, de nem hordozhatóak.
Az ORM eszközök használata gyakran vezethet rosszul tervezett adatbázisok készítéséhez.
Nem SQL adatbázisok
[szerkesztés]Egy másik megoldás az objektumorientált adatbázis (OODBMS) vagy dokumentumorientált adatbázis (pl: natív XML adatbázis) használata. OODBMS rendszerek olyan adatbázisok, amelyek objektumorientált változók tárolására alkalmasak. OODBMS rendszer használata esetén nincs szükség az objektumok konvertálására SQL formába, mivel az objektumok közvetlenül tárolhatóak az adatbázisban.
Dokumentumorientált adatbázis használata megakadályozza a „foszlány” objektumok tárolását. Sok rendszer támogatja az XQuery nyelvet nagy mennyiségű adat gyors kinyerésére.
Jegyzetek
[szerkesztés]Külső hivatkozások
[szerkesztés]- About ORM by Anders Hejlsberg
- Mapping Objects to Relational Databases: O/R Mapping In Detail by Scott W. Ambler
- Core J2EE Design Pattern: Data Access Objects
- Choosing an Object-Relational mapping tool Archiválva 2020. július 10-i dátummal a Wayback Machine-ben