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.
Előnyei 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 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.Lásd http://www.ibm.com/developerworks/java/library/j-genericdao/index.html for workarounds
Eszközök, keretrendszerek 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 Microsoft Entity Framework DBIx::Class objektum-relációs leképezés (ORM) modul a Perl számára
Jegyzetek
Fordítás
Kategória:Programtervezési minták