dagblog.
← Archiv

J2EE vzory:DAO — odstínění zdroje dat


Návrhový vzor DAO (Data Acess Object) patří k základním J2EE vzorům, které je 
 dobré pochopit, pokud chcete tvořit flexibilní, nejen, webové aplikace. Pokud se 
 děsíte slovního spojeni J2EE vzor, tak vás mohu uklidnit, J2EE je jen
 kategorie, do které byl DAO zařazen. V tomto 
 povídání volně navážu na spot ORM letem světem

Smysl

Zavádí rozhraní mezi zdrojem dat a jejich konzumenty, izoluje 
 logiku pro získání dat do jedné vrstvy.

Motiv

Stejně jako jsou různorodé aplikace jsou různorodé zdroje dat, které 
 aplikace využívají. Mezi ty klasické patří relační databáze, 
 objektové databáze atd. Není neobvyklé, že aplikace využívají další 
 mnohem specifičtější zdroje jako webové služby.

Tyto a samozřejmě další zdroje dat mají určitý způsob pro získávání dat. V 
 relačních databázích to je jazyk SQL, pro jejich O/R kolegy to je obdoba 
 SQL. Zdroje dat se nám můžou v rámci nasazení měnit, aplikace musí umět 
 spolupracovat jak s MySQL tak Oracle databází, webové služby jsou 
 nahrazeny XML soubory.

S takto různorodými zdroji dat to v praxi dopadá tak, že v tom horším případě
 existuje v aplikační logice plno rozboček když databáze Oracle tak.
 V tom lepším případě máme persistentní vrstvu, která nás odstiňuje, ale co když
 ji např. z výkonnostních důvodů potřebujeme změnit? Dalším problémem je roztroušení
 logiky pro získání dat takřka po všech čertech a z toho plynoucí problémy.

Řešením těchto problému jsou DAO (Data Acess Object), které zavádí rozhraní pro
 práci s daty a zároveň implementují potřebnou logiku. Aplikační vrstva pak využívá
 služeb DAO vrstvy, která ji odstiňuje od zdroje(ů) dat a zároveň koncentruje 
 všechnu logiku pro získání dat.

Diagram tříd v DAO schématu
Obrázek se nepodařilo načíst. Diagram tříd v DAO schématu
↗ Medium

Diagram tříd znázorňuje rozhraní IDao, které dále využívá aplikační logika 
 odstíněná od konkrétní DAO implementace, která zapouzdřuje jednotlivé datové zdroje.
 Přenos dat mezi DAO a aplikační logikou mohou zprostředkovat například 
 POJO objkety. Volba
 konkrétního DAO objektu v závislosti na prostředí může obstarat IoC framework 
 viz. (Dagblog 17.05.2004)J2EE vzory: Inversion of Control a Dependency Injection nebo
 implementace vzoru Factory.

Pro další studium DAO:

Verze na Medium

Související články

Související epizody CZ Podcastu