Subtransakce (vnořené transakce) používáme v TOPLinku (používámě
komerční verzi a nevím, zda je to možné i ve verzi Essential která je
free). Ten podporuje zanořování transakcí. Tzn. z jedné transakce si
vytvoříte další subtransakci. Její změny pak můžete promítnout do
nadřízené transakce (commit), nebo je zahodit (rollback). Změny do
databáze se ale zapisují až při potvrzení první transakce. Vnořené
transakce nic do DB nezapisují.
To by me zajimalo jak to dela, to co pisete se mi vubec nezda. JTA nic
jako vnorene transakce, jak je popsal puvodni pisatel nepodporuje. JTA
definuje sice RequiresNew, ale to se chova tak, ze vrchni transakce se
suspenduje, vytvori se nova *nezavisla* transakce a po jejim dokonceni
se vrchni transakce resumne. Obe transakce jsou ovsem na sobe nezavisle!
Navic tahle uroven propagace transakci neni podle EJB specky mandatory,
takze lze pouzit jenom v nekterych aplikacnich serverech.
To co popisujete je klasicke chovani transakci, zadne subtransakce to
nejsou. To jest, pokud mate rozjetou transakci a nejaka vrstva nize se
snazi rozjet transakci s propagaci Required, stane se pouze to, ze
transakcni manazer vrati tu puvodni transakci. Commit nebo rollback
akorat oznaci status transakce, vlastni commit nebo rollback probehne az
na urovni kodu, ktery tu transakci opravdu vytvoril.
Podle meho nazoru, puvodni tazatel nepotrebuje nic specialniho (vnorene
transakce - nevhodne pouzity termin), klasicke transakcni chovani presne
splnuje to co potrebuje. A rozjede transakci, B participuje. Commit je
fyzicky proveden az ve chvili, kdy A commituje. A i B mohou celou
transakci rollbacknout. Pak plati budto vsechno z A a B a nebo nic z A i B.
--
S pozdravem Roman "Dagi" Pichlik
/* http://www.sweb.cz/pichlik/ Blog pro kodery */
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________