Witam, krążę na razie po googlu i takich tam i szukam informacji na temat transakcji. chodzi mi o taki przypadkek:
działają sobie wątki, które mogą wykonywać usługi biznesowe, które przez obiekt dao modyfikują sobie jakieś tam dane.
chcę użyć springa i hibernate i nie jest łatwo to wszystko posklejać do kupy :)
ogolnie moja koncepcja jest taka:
a) tworzę obiekty usług( np usługa odejmująca coś z jednego konta i dodająca do drugiego) - to oczywiście musi wykonać się transakcyjnie, albo wszystko albo nic
b) w tych usługach umieszczam obiekty dao (z applicationContext)
c) tworzę obiekty Dao( dziedziczę po HibernateDaoSupport, przekazuje SessionFactory z applicationContext)
d) tworzę coś w stylu fasady, gdzie znajdują się metody wykonujące uslugi z pkt1;
e) w applicationContext tworzę
-
menadzera transakcji HibernateTransactionManager( czy moze JtaTransactionManager - czym się to rozni )
-
bean po klasie TransactionProxyFactoryBean ( jako target ustawiam tą moją klasę z metodami -fasadę, dla wszytkich metod ustawiam ISOLATION.SERIALIZABLE)
-
dataSource,sessionFactory,daoImpl
Ogólnie jakoś tak to widzę, tylko pojawia się parę wątpliwości :) :
-
chcę, aby każda usługa wykonywała się jako transakcja z takim poziomem izolacji,aby żadna inna usluga nie mogła być wywołana - czy tak zaprojektowany system będzie tak działał ?
-
mam sobie wywołaną usługę biznesową i teraz chcę chcę wykonać np 2 operacje na obiecie dao:
- DAO.szukaj (bleble)
- sprawdz/zmien/blebleble
- DAO.zapisz(ble)
Czy to zadziała tak jak należy w ramach transakcji i zostanie commitnięte po wykonaniu metody z fasady ?
-
wszystkie obiekty mają być singletonami w takim przypadku ?
-
wszelkie inne uwagi, lepsze rozwiązanie, propozycje ...
z góry dzięki, jak mi się coś jeszcze przypomni to dorzucę bo układanka tego wszystkiego nie jest na początku łatwa :)