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 ______________________________________________________________________

Odpovedet emailem