ejb spolecne s sql

Tomas Zverina tomas na templation.net
Úterý Srpen 19 09:36:02 CEST 2003


Zdravim konferenci.

Mam na Vas dotaz, doufam, ze mi nekdo poradi. Jedna se mi o J2EE
aplikaci, konkretne jeji EJB vrstvu.

U jednoho typu entit bych potreboval po kazde zmene prepocitat data v
nejake pomocne tabulce (napr. zaznam o soutezi - nasledne potrebuji
prepocitat zebricky hracu - nebo neco podobneho).

Pokud jsem se v tom dobre zorientoval mam dve moznosti:

1) Pracovat se statistikami pomoci EJB entit, pomoci vhodnych finderu
naleznu pozadovane zaznamy a upravim.

2) Napisu si SQL dotazy, ktere udelaji totez

Dospel jsem k tomu, ze pouziti SQL dotazu postavenych na miru memu
problemu bude vhodnejsi (mohu napr. poslat update vice radku najednou,
poskladat si pomerne slozity dotaz na vyber tech, ktere chci zmenit,
apod. - celkove tedy rychlejsi a s pouzitim mene dotazu)

Pristup k entity beane je zapouzdren session facade, v jedne metode na
facade tedy upravim entitu a pak do db poslu prepocitavaci sql dotazy.
Narazil jsem ovsem na to, ze v DB po zmeneni vybranych polozek dane
entity zmeny nejsou. Muj EJB kontejner (jboss), je ulozi az po dobehnuti
cele metody na facade. V dusledku toho se pochopitelne vygeneruji
nesmysly. V tuto chvili jsem to obesel tak, ze po nasetovani vsech
potrebnych zmen do entity na ni zavolam findByPrimaryKey - tim docilim
toho, ze ji jboss flushne do DB a pak probehnou dotazy spravne.
Pochopitelne to je reseni velmi osklive a nerad bych aby mi tam zustalo
- nezda se mi ze by to bylo neco na co se da spolehat.

Dotaz tedy zni:

Nevite o nejakem cistem zpusobu jak primet aplikacni server prave k tomu
"flushnuti" zmen do DB?

Myslite si ze jsem zvolil spatnou cestu (EJB + SQL)?

Tesim se na vase nazory.

S pozdravem,

Tomas Zverina



Další informace o konferenci Konference