HTML

Thinking in Java

Friss topikok

Archívum

2010.03.19. 15:09 JJJJ

Java-ban írt üzleti logika VS tárolt eljárások

Végeztem egy kis kutatás, hogy milyen érvek szólnak a tárolt eljárások használata ellen, a mai tipikus nagyvállalati Java alkalmazások készítésénél.

 

OOP szempontok

A tárolt eljárások használata rontja az absztrakciót, és sérül az üzleti logikák egységbe zárása. Az üzleti logika részben a szerver oldali Java kódban, részben az adatbázis oldali tárolt eljárásokba van bezárva. Mivel nem transzparens az átjárás (pl. a tárolt eljárásból általában nehézkes a Java rétegbe visszahívni.) szükség lehet bizonyos logikák ismétlésére, ez csökkenti a későbbi módosítás és hibakeresés hatékonyságát.

A tárolt eljárások régi típusú nyelvek eredetileg nem objektum orientált tervezésre hozták létre, az ehhez szükséges tudást nyelvenként eltérő mértékben és sikerességgel csak utólag fejlesztették bele (sok helyen pl. nem adhatóak át objektumok, így a függvények paraméter listái követhetetlenül hosszúak lehetnek.)
A tárolt eljárás egy nem relációs nézete a relációs adatbázisnak jellemzően hívás és procedúra orientált az objektum orientált tulajdonságai korlátozottak.

Fejlesztési szempontok

A tárolt eljárások általában nem szerkeszthetőek integrált Java fejlesztői eszközökkel, a java kód és az SP kód két helyen két fejlesztő eszközben történik (eclipse,toad) ez megosztja a fejlesztő figyelmét. A kód változtatása során át kell írni a tárolt eljárást majd lefordítani, visszamenni a fejlesztő eszközbe, ott is megtenni a szükséges módosításokat és csak ezután lehet tesztelni a változtatást.

A tárolt eljárásokban történő hibakeresés nem túl felhasználóbarát, a Java fejlesztőknek a megszokott IDE-ben sokkal szélesebb eszközkészlete van a és ezek használatában sokkal nagyobb gyakorlatuk van. 

Nem válik kétfelé a hibakeresés, nem kell először kizárni a tárolt eljárás hibáját, majd utána vizsgálni a java kódba lévő hibákat, vagy fordítva. A fejlesztő a teljes folyamatot a megszokott fejlesztő eszközében tudja debuggolni.

Platform függetlenség

A tárolt eljárások nyelvei adatbázisonként különböznek, sok esetben a nyelv felépítése is más. Nem lehet automatikusan egyik nyelvről a másikra portolni. A mai modern JPA implementációk használatával és a tárol eljárások mellőzésével az elkészült alkalmazás gyakorlatilag teljesen adatbázis független lesz, néhány config paraméter átírásával portolható az alkalmazás.

A fejlesztők ideális esetben teljes körű Java tudással rendelkeznek, viszont az adatbázis specialistákat leszámítva nem ismerik mélységében az adatbázis kezelők által használt nyelvek teljes portfolióját azok különbségeit, illetve gyengeségeit. Így nem minden esetben tudnak az adott platformhoz legjobban illeszkedő optimalizált és gyors tárolt eljárás kódot készíteni. A cég kompetencia készlete nem lesz homogén, a fejlesztők cserélhetősége jelentősen csökken.

A tárolt eljárások létjogosultsága.

A tárolt eljárás egy adatmanipulációs terület specifikus nyelv, a rendszertől elkülönülő nagy számításigényes (sok és hosszú sql) adatmanipuláció jellegű műveletek megvalósítására használható, de használata előtt minden esetben részletesen meg kell vizsgálni, hogy milyen egyéb lehetőségek vannak, az adott művelet hatékony megvalósítására.

 

Szólj hozzá!

süti beállítások módosítása