25. října 2007

Architektura naruby

Právě jsem si přečetl Dagiho příspěvek Do pranice: Spring Web Flow a nebo JBoss Seam a nemohl jsem se nepřidat se stížností na dnešní frameworky. Už toho mám dost, jak se neustále pod rouškou jednoduššího vývoje a já nevím čeho všeho porušují základní pravidla vrstvení aplikace: nižší vrstva nemá vědět, ža nad ní je nějaká vrstva vyšší a využívat pouze služeb svých a nebo služeb vrstev pod ní.

JBoss Seam
je úplně klasickým příkladem této šílenosti, protože vrstvy nižší (v tomto případě např. session beany) jsou oanotovány vším možným co se týká jejich komunikace s JSF (přes Seam) jako vrstvou vyšší. Cestou ven je samozřejmě použití XML konfigurace, ale ta se v souvislosti se Seamem skoro neprezentuje.

Z podobného důvodu používám s Hibernate vždy XML konfiguraci. Prostě nechci aby můj model byl zaneřáděn anotacemi, které ke své funkci vůbec nepotřebuje. Mapování uložení do DB je přeci věc DAO vrstvy a model se o něj rozhodně nemá starat.

Ano, je to složitější, pracnější, ale rozhodně je to flexibilnější. Řada čtenářů my možná namítne, že na to není čas, že je jim tato flexibilita na nic atd. Je to každého věc, ale já mám flexibilitu rád a nevzdám se jí. Navíc mám rád pokud je kód přehledný, hezky strukturovaný a provázaný jenom jedním směrem, shora dolů a ne i naopak.

1 komentář:

Roman Pichlík řekl(a)...

Mluvis mi z duse, na tohle tema (anotace vs. xml, provazovani vrstev) jsem napsal nezpocet komentaru at uz ve svem blogu a nebo v ruznych diskusnich skupinach. Pokud se vyjadrim k anotacim, tak podle meho nazoru musis platit pravidlo, ze anotace se maji pouzit tam kde vyrazne zjednodusi zapis metadat oproti XML. Konkretne v ORM svete to plati pouze pro jednoduche typy mapovani. Pokud clovek zacne pouzivat vlastni usert typy a dalsi vychytavky, tak jsou anotace peklo. Jsem rad, ze jsi taky uhodil hrebicek na hlavicku v pripade ORM anotaci pro domenovy model. Se svazovanim domain modelu s persistenci mam stejny problem ;-).