středa 28. března 2007

Jak si nenaběhnout s JSP

Dnes jsem v jednom starším projektu našel pěknou botu. A protože nemusí být hned na první pohled zřejmá (ani mě nebyla :), podělím se o to, v čem je problém.
Šlo o starou dobrou JSP stránku, která konstrukcí <jsp:usebean id="b" class="MujBean"></jsp:usebean> uložila do proměnné b objekt typu MujBean. Ten má metodu getMuj(), který vrací objekt typu Muj tak, že jej natáhne z databáze. Jeho vlastnosti se pak vypisují na stránce.
Divné bylo, že na jednoduché natažení objektu z databáze vypsání stránky trvalo trochu moc dlouho (i několik vteřin). Zapnutí podobnějšího logování ukázalo, že se do databáze dělá spousta dotazů místo jednoho.

Problém byl v tom, že každé vypsání b.muj.neco na stránce zavolalo metodu getMuj(), která pro data ochotně sáhla do databáze.
Náprava byla celkem jednoduchá -- objekt z databáze vytažený ukládat do proměnné a před šaháním do databáze zkontrolovat, jestli objekt už existuje.
Z dlouhodobého hlediska je víc než vhodné se na staré dobré JSP vybodnout a používat JSP maximálně jako View v Model 2 MVC.

Žádné komentáře:

Okomentovat