Ahoj,

 nested transakce maji vyznam tam, kde chcete vnorenou transakci rollbackovat
nezavisle na te rodicovske. Ale zaroven ji chcete commitovat/rollbackovat
soucasne s tou rodicovskou (vetsinou two phase commit).

  UseCasy na to jsou, ale da se bez nich zit.  Implementuji to jen nektere
databaze (napr. Oracle). Takze treba Hibernate to nepodporuje. 

  Lukas

On Wed, 09 May 2007 09:34:10 +0200, Roman Pichlik wrote
> > 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