Objektum-relációs leképzés
Az objektum-relációs leképzés (angolul Object-Relational Mapping, röviden ORM) egy programozási technika, amely lehetővé teszi adatok átalakítását nem kompatibilis típusos rendszerek és objektumorientált programozási nyelvek között. Az ORM egy „virtuális objektum-adatbázist” hoz létre, amelyet a programozási nyelvben használhatunk, így az adatbázisban tárolt információk objektumként jelennek meg a programban. Számos ingyenes és fizetős szoftvercsomag létezik, amelyek megvalósítják az ORM-et, de egyes fejlesztők saját maguk is elkészítik az ORM eszközüket, hogy azt a projektjeikhez igazítsák.
Áttekintés
szerkesztésAz adatkezelési feladatokat objektumorientált programozásban általában az objektumok példányainak módosításával végezzük, amelyek szinte soha nem egyszerű skalár változók. Például egy telefonkönyv-bejegyzés a gyakorlatban egy személyt reprezentál, akihez több telefonszám és cím is társulhat. Objektumorientált szemléletben ezt egy "Személy" objektummal modellezzük, amelynek attribútumai a név, a cím és a telefonszámok listája. A telefonszámok listája újabb "Telefonszám" objektumokat tartalmazhat, így komplex hierarchia épülhet ki. A programozási nyelv ezeket a bejegyzéseket objektumként kezeli, amelyekhez különféle metódusok, például getterek és setterek tartozhatnak.
A legtöbb népszerű adatbázis-kezelő rendszer, például az SQL alapú DBMS, azonban alapvetően csak skalár értékeket (például szövegeket, számokat) képes tárolni és kezelni. Emiatt a programozónak vagy csak egyszerű típusú változókat kellene használnia, vagy ki kell dolgoznia olyan metódusokat, amelyek az objektumokat átalakítják egyszerű értékek halmazává, hogy azok tárolhatók legyenek az adatbázisban. Az ORM ezt az átalakítási folyamatot automatizálja, és lehetővé teszi, hogy az adatok objektumként jelenjenek meg a kódban, miközben a háttérben táblákban, rekordokban tárolódnak.
A fő kihívás az objektum logikai szerkezetének atomi (oszthatatlan) formára alakítása, amely alkalmas az adatbázisban történő tárolásra. Az ORM célja, hogy az objektumok tulajdonságait, valamint azok egymás közötti kapcsolatait megőrizze, így az adatok pontosan visszaállíthatók legyenek az adatbázisból történő betöltéskor is. Ha a tárolás és a visszatöltés funkciója hibátlanul működik, azt mondjuk, hogy az objektum perzisztens, vagyis állapotát tartósan képes megőrizni.
Összehasonlítás a hagyományos adatelérési technikákkal
szerkesztésA hagyományos adatelérési technikákkal szemben az ORM jelentősen lerövidítheti a megírandó kód mennyiségét az objektumorientált nyelvek és relációs adatbázisok közötti adatátvitel során. Az ORM lehetővé teszi, hogy a fejlesztők az adatokhoz objektumként férjenek hozzá anélkül, hogy minden alkalommal SQL-lekérdezéseket kellene írniuk, ezáltal növelve a fejlesztés hatékonyságát és az alkalmazások karbantarthatóságát.
Az ORM-nek ugyanakkor vannak korlátai is: bizonyos speciális, adatbázisra optimalizált technikák – például nagy mennyiségű adat törlése vagy összetett adattáblák közötti kapcsolatok kezelése – nem mindig hatékonyan valósíthatók meg ORM-mel. Sok ORM eszköz nem teljesít jól tömeges adatmanipuláció esetén, illetve néha a tárolt eljárások (stored procedures) gyorsabbak, viszont ezek kevésbé hordozhatók különböző adatbázisok között.
Az ORM eszközök alkalmazása olykor rosszul tervezett adatbázisok létrejöttéhez vezethet, ha nem veszik figyelembe az adatbázis-szintű optimális struktúrákat. Ezért a tervezés során mindig szükség van az adatbázis és az alkalmazás logikájának összehangolására.
Nem SQL adatbázisok
szerkesztésAlternatívát jelenthetnek az objektumorientált adatbázisok (OODBMS) vagy a dokumentumorientált adatbázisok (például natív XML adatbázisok). Az OODBMS rendszerek képesek közvetlenül objektumorientált változókat tárolni, így ezeknél nincs szükség az objektumok SQL-formátumba történő átalakítására. Az objektumok szerkezete és kapcsolatai közvetlenül megőrződnek az adatbázisban, ami egyszerűsíti a fejlesztést és növeli a rugalmasságot.
A dokumentumorientált adatbázisok alkalmazása lehetővé teszi, hogy az adatokat strukturált dokumentumként (például XML vagy JSON formátumban) tároljuk, így elkerülhető a „foszlány” objektumok tárolása, amikor az objektumok szerkezete nem illeszthető jól a táblás szerkezethez. Sok modern rendszer, például a MongoDB vagy CouchDB, támogatja az XQuery vagy más lekérdezőnyelvek használatát, amelyek nagy mennyiségű adat gyors kinyerését teszik lehetővé.
Jegyzetek
szerkesztésKü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