Databázová alchymie v praxi

Stejně jako řada dalších činností v rámci IT i vývoj databázových aplikací se v minulých letech posunul směrem k ...


Stejně jako řada dalších činností v rámci IT i vývoj databázových aplikací se v
minulých letech posunul směrem k vizuálnímu návrhu. Současní programátoři
standardně vyžadují prostředí umožňující UML modelování, testování, ladění a
analýzu běhu programu, sledování auditů a metrik, refactoring, editory WYSIWYG
a podobně.
Máme-li se dále zaměřit na praktické přínosy uvedeného vývoje, bude vhodné je
demonstrovat na konkrétním produktu. Zvolili jsme Oracle JDeveloper 10g, který
vývoj v této oblasti dobře odráží. Pro případné experimenty je ke stažení na
webové adrese otn.oracle.com/software/products/jdev/htdocs/soft10g.html.
Uvedený produkt si činí ambice zpřístupnit svět J2EE aplikací širokému spektru
programátorů bez ohledu na míru jejich znalostí. Nabízí jim prostředí ADF
(Application Development Framework), které umožňuje rychlý vývoj aplikací (RAD,
Rapid Application Development) na všech jejich vrstvách a dává současně možnost
výběru preferované J2EE technologie.

Složitost J2EE
Kdo někdy zkusil napsat byť i jednoduchou webovou aplikaci na platformě J2EE,
jistě bude souhlasit s tvrzením, že to není zcela jednoduché. A navíc i malá a
jednoduchá aplikace (jako výpis tabulky a editační formulář) obnáší poměrně
velký objem manuálního programování.
Historie J2EE aplikací začala používáním Java Servlets a Java Server Pages
(JSP), které umožňovaly oddělit aplikační logiku od prezentační. Tento design
se nazývá JSP Model 1 a jeho nevýhodou je úzká, přitom nijak konkrétně
definovaná vazba mezi prezentační a aplikační vrstvou. Navíc přechod mezi
jednotlivými JSP stránkami je pevně zabudován v jejich kódu.
Jedním z řešení zmíněné problematiky je koncept Model-View-Controller (MVC),
který striktně odděluje prezentační vrstvu (View), aplikační logiku (Model) a
systém pro řízení toku událostí (Controller). Uživatelův pohyb po HTML
stránkách představuje na serverové straně tok událostí mezi uživatelem
(prohlížečem), prezentační vrstvou a aplikační logikou. Za popularizaci MVC
(konkrétně Model 2) se zasloužil open source projekt Jakarta Struts.

ADF
Application Development Framework (ADF) je implementací konceptu MVC využívá
již zmiňovaného frameworku Struts. Hlavním přínosem technologie ADF je část ADF
Model, která abstrahuje jednotlivé podoby konkrétních realizací modelu,
takzvané "business services", do jednotného rozhraní vůči vrstvám view a
controller. Tento přístup dovoluje rozšířit IDE o deklarativní styl vývoje J2EE
aplikací drag-and-drop, a nabízí tak programátorovi výrazně vyšší produktivitu
práce. Během modelování aplikace jsou automaticky generována metadata v podobě
XML souborů, které jsou interpretovány v runtime fázi ADF.
V ADF Model jsou naimplementována rozhraní k následujícím službám (business
services):
JavaBeans
webové služby
Business Components for Java (BC4J)
EJB Session Beans

V praxi
Hlavním přínosem frameworku ADF je jeho integrace do IDE a možnost definovat
obsah celé řady XML souborů velmi jednoduše stačí přetáhnout objekt na jiný
objekt, volit akce v kontextovém menu nebo pomocí řady připravených průvodců.
Nejlepší demonstrací produktivity plynoucí z ADF je praktická ukázka. Ve
vloženém textu je k dispozici příklad, jak lze v prostředí JDeveloper 10g
vygenerovat jednoduchou aplikaci, která bude zobrazovat obsah dvou tabulek v
podobě Master-Detail. Z technologických možností, které ADF nabízí, použijeme
na prezentační vrstvě technologii JSP a na vrstvě business service technologie
JavaBeans a TopLink.
Komponenty TopLink zajistí komunikaci aplikační vrstvy s databází.
Programátorům pomáhá řešit problematiku persistence libovolných javových
objektů, definuje a realizuje uložení/načtení hodnot atributů tříd Javy do a z
relačních databází.
TopLink se skládá ze dvou komponent. První z nich je TopLink Mapping Editor,
který je plně integrován v prostředí JDeveloper jeho prostřednictvím
programátor mapuje svět Javy a svět relačních dat. Druhou částí je TopLink
knihovna, která zajišťuje fázi runtime a její činnost je řízena metadaty
definovanými v Mapping Editoru. Na základě metadat jsou v runtime fázi
automaticky generovány SQL příkazy a následně prováděny a vytvářeny příslušné
objekty Javy. TopLink programátora oprostí od technických detailů (jako jsou
JDBC konektivita, SQL příkazy) a zajistí vysoký výkon, správu transakcí a
možnost modifikovat standardní realizaci v případě potřeby.

Tvorba aplikace
Následující kroky představují řešení příkladu, který ukazuje, jak lze v
prostředí JDeveloper 10g vygenerovat jednoduchou aplikaci, jež bude zobrazovat
obsah dvou tabulek v podobě Master-Detail.
V našem příkladě uvažujme o dvou databázových tabulkách EMP a DEPT, kde EMP
záznamy referencují DEPT záznamy, tj. můžeme realizovat Master-Detail pohled na
tato data.
Obě tabulky (EMP a DEPT) přetáhneme z Connection Navigatoru do Java Diagramu.
Tímto krokem se vygenerují dva soubory emp.java a dept.java a dále je
automaticky vygenerováno mapování těchto bean a db tabulek. Mapování je uloženo
v souboru toplink-deployment-descriptor.xml. V tomto okamžiku máme vygenerován
model. Zbývají části Controller a View.
Pro View je potřeba vygenerovat DataControl pro třídy Emp a Dept. Stačí tedy,
aby byl soubor dept.java přetažen z Application Navigator do okna Data Control
Palette.
Realizaci View a Controller zahájíme ve vizuálním editoru struts-config.xml,
kam vložíme Page Forward stránku tím, že přesuneme příslušnou ikonu na okno
editoru. Poklepáním na ikonu stránky otevřeme tuto JSP stránku ve WYSIWYG
editoru.
V Data Control Palette vybereme DeptCollection s volbou Drop As: Read-Only form
a přetáhneme do JSP editoru.
V Data Control Palette následně vybereme DeptCollection s volbou Drop As:
Navigation Buttons a přetáhneme v JSP editoru do oblasti formuláře
reprezentující záznam DEPT.
Dále vybereme empCollection s volbou Drop As: Table a přetáhneme opět do JSP
editoru do oblasti formuláře.
Díky předchozím krokům v editoru struts-config.xml přibyla ikona DataAction a z
ní vedoucí šipka "success" do JSP stránky. Toto představuje standardní
aplikační design ve frameworku Struts. Navíc univerzální třída DataAction je
ADF implementací abstraktní třídy Action definované ve Struts, tj. na základě
metadat zajišťuje díky ADF Modelu provedení všech akcí týkajících se Modelu.
Nyní je aplikace kompletně vygenerovaná a pravým tlačítkem na DataAction (volba
Run) je možné ji okamžitě spustit.
Vývojové prostředí Oracle JDeveloper 10g Preview si lze zdarma stáhnout z
webové adresy otn.oracle.com/software/products/jdev/htdocs /soft10g.html na
základě souhlasu s takzvanou development licencí. Celá řada tutoriálů je také k
dispozici na URL: otn.oracle.com/products/ jdev/collateral/tutorial10g.html.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.