[Javalist] TransactionAttributeType.REQUIRES_NEW

Zsombor gzsombor at gmail.com
2013. Feb. 3., V, 15:34:49 CET


Nem tűnik túl szépnek, akkor már a külső törlő kódot külön bean-be raknám,
amire nem is vonatkozna tranzakció, csak ő hívogatná a tranzakciós
függvényeket a DAO-beanen.

Üdv
 Zs



2013/2/3 Zoltán Bernát <bernatzoltan at gmail.com>

> Mar csak egy kerdes: akkor ez az "elegans"/"kovetendo" megoldas, amit
> javasoltal?
>
> Böszörményi Péter <zmblevlist at gmail.com> írta (2013. február 3. 15:20):
> > Ott rontod el, hogy lokalisan hivod a deletePic metodust. Ilyenkor nem
> > jatszik a tranzakcios proxy. Az egyik megoldas, hogy beinjektalod a
> beanbe
> > onmagat, es azon a beanen hivod a deletePic metodust.
> >
> >
> > On Sun, 03 Feb 2013 15:17:45 +0100, Zoltán Bernát <
> bernatzoltan at gmail.com>
> > wrote:
> >
> >> Sziasztok!
> >>
> >> JPA kerdes. Tranzakcio kezeles. A megoldando feladat az lenne, hogy
> >> tobb entitast toroljek a DB-bol, de olyan modon, hogy ha valamelyik
> >> torles meghiusul (pl foreign key miatt), attol meg a tobbi torles
> >> rendben megtortenjen.
> >> (azaz egy sikertelen torles ne rollback-elje az egesz procedurat)
> >>
> >> Ugy gondoltam volna megoldani a dolgot, hogy egy tranzakcioban futo
> >> metodusbol ciklusban torlom a kepeket egy masik,
> >> TransactionAttributeType.REQUIRES_NEW tranzakcioban.
> >>
> >> A hibajelenseg az, hogy  ha egy torles nem sikerult a deletePic (Pix
> >> picEntity) metodusban(pl ConstraintViolationException miatt. (ami
> >> rendben is van)), akkor a metodus kovetkezo hivasanal mar
> >> TransactionRequiredException kivetel dobodik szinten a  deletePic (Pix
> >> picEntity) metodusban, es igy az amugy torolheto entitast sem sikerul
> >> torolni. Azaz ha csak egy entitas is van, amelyik nem torolheto, az
> >> osszes torlese meghiusul.
> >>
> >> Azt gondolom, elvi hibas a megoldasom, meg azt, hogy a
> >> TransactionAttributeType.REQUIRES_NEW pont ilyen esetekre lett
> >> kitalalva. Hol benazom el? (Hol ertem felre a
> >> TransactionAttributeType.REQUIRES_NEW szerepet)?
> >> Koszi!
> >>
> >> @TransactionAttribute(TransactionAttributeType.REQUIRED)
> >> public List<Integer> deletePix(List<Integer> ids){
> >>     for(Integer id : ids){
> >>         ...
> >>                     if(deletePic(pixBeanEntity)){
> >>                         ... //sikeres torles
> >>                     }
> >>     }
> >> }
> >>
> >>
> >> @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
> >>     private boolean deletePic (Pix picEntity){
> >>         try {
> >>             em.remove(picEntity); //em az EntitiManager
> >>             //org.hibernate.exception.ConstraintViolationException, ha
> >> nem megy a torles a foreign key miatt. Ez az elvart viselkedes.
> >>             //De: TransactionRequiredException jon akkor is, ha
> >>             em.flush(); //entitiManager flush
> >>             // itt tovabbi utasitasok vannak, amikre nem kerul a
> >> vezerles, ha a fenti flush() kivetelt dobott
> >>         } catch (Exception e) {
> >>             context.setRollbackOnly();
> >>             return false;
> >>         }
> >>         return true;
> >>     }
> >> _______________________________________________
> >> Javalist mailing list
> >> Javalist at lists.javaforum.hu
> >> http://lists.javaforum.hu/mailman/listinfo/javalist
> >
> >
> >
> > --
> > Üdvözlettel,
> > Böszörményi Péter
> > _______________________________________________
> > Javalist mailing list
> > Javalist at lists.javaforum.hu
> > http://lists.javaforum.hu/mailman/listinfo/javalist
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130203/c8ca9464/attachment.html>


További információk a(z) Javalist levelezőlistáról