Adathozzáférési objektum
A számítástudományban az adathozzáférési objektum (DAO - Data Access Object) egy objektum, ami absztrakt interfészt biztosít adatbázis vagy más perzisztencia mechanizmushoz. Az alkalmazáshívások leképezésével az adat rétegre az adathozzáférési objektum specifikus adatműveleteket biztosít anélkül, hogy felfedné az adatbázis belső szerkezetét.
Habár a minta alkalmazható több programozási nyelvben is, hagyományosan a Java EE alkalmazásokhoz társítják, amelyek relációs adatbázisokat használnak, és ezt a JDBC API szerint végzik. Eredetileg a Sun Microsystems dolgozta ki, és a Core J2EE Patterns írta le.[1]
Előnyei
[szerkesztés]Az adathozzáférési objektum egyszerűen és szigorúan elkülöníti a program két részét. Ezeknek nem kell, és nem illik tudniuk egymásról, mivel elvárás, hogy függetlenül lehessen őket fejleszteni, amire gyakran lesz szükség. Amíg az adathozzáférési objektum interfésze változatlan marad, addig az üzleti logika hagyatkozhat erre az interfészre, míg a perzisztencia logika változásai nem érintik a klienseket. Maga a tár rejtve van a program többi része elől, az adathozzáférési objektum a közvetítő szerepét tölti be, ő mozgatja az adatokat az alkalmazás két része között. Az egységtesztelés is egyszerűbb, a program két része külön-külön tesztelhető.
A Java nem specifikus környezetében az adathozzáférési objektumok többféleképpen is megvalósíthatók. Ez az egyszerű interfésztől egészen komplett keretrendszerekig, kereskedelmi termékekig terjed. ezek használatához érteni kell. Különböző technológiák, mint a Java Persistence API és az Enterprise JavaBeans alkalmazásszerverekbe építhetők, és felhasználhatók alkalmazásokban. A TopLink kereskedelmi termék, objektumrelációs leképezésen (ORM) alapul. Népszerű nyílt forrású termékek: Doctrine, Hibernate, iBATIS, és az olyan JPA implementációk, mint az Apache OpenJPA.
Hátrányai
[szerkesztés]A minta lehetséges hátrányai a szivárgó absztrakció, az absztrakció megfordítása és a kódtöbbszörözés. Az adathozzáférési objektum szabályos Java objektumként való absztrakciója elrejtheti, hogy drága adatbázis-műveletek állnak a háttérben, és arra kényszeríthetik a fejlesztőket, hogy több kéréssel szerezzék meg azokat az adatokat, amiket egyetlen SQL lekérdezéssel megszerezhetnének. Ha több adathozzáférési objektum kell, akkor mindegyiknél végig kell menni a létrehozás, olvasás, frissítés, és törlés műveleteken. Mindezek keretrendszerrel elkerülhetők, ami generikus adathozzáférési objektumokat hoz létre, amik képesek elvégezni ezeket a műveleteket.[2]
Eszközök, keretrendszerek
[szerkesztés]- ODB fordító alapú objektum-relációs leképezés (ORM) rendszer a C++-hoz
- ORMLite Könnyűsúlyú objektum-relációs leképezés (ORM) keretrendszer Javában JDBC-hez és Androidhoz[3]
- Microsoft Entity Framework
- DBIx::Class objektum-relációs leképezés (ORM) modul a Perl számára
Jegyzetek
[szerkesztés]- ↑ Core J2EE Patterns - Data Access Objects. Sun Microsystems Inc., 2007. augusztus 2.
- ↑ Lásd http://www.ibm.com/developerworks/java/library/j-genericdao/index.html for workarounds
- ↑ ServiceStack 4 Cookbook (angol nyelven). Packt Publishing Ltd, Chapter 4. o.. ISBN 9781783986576. Hozzáférés ideje: 2016. június 22.
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Data access object című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.