JPA, optimimisticke zamykani a bezestavove update/delete
Ondra Medek
xmedeko na gmail.com
Pondělí Srpen 3 12:40:30 CEST 2009
DD,
delam typickou CRUD web aplikaci pomoci JPA a jako DAO pouzivam
stateless session beany. Na objektu pro JPA mam pomoci @Version
oznaceny atribut pro optimisticke zamykani. Objekt ulozim v
HttpSession kdyz se nacte z DB, uzivatel ho pak zmeni nebo vymaze. Pro
update, resp. delete objektu pouzivam v stateless session beane:
update: obj2 = em.merge(obj)
delete: em.remove(em.merge(obj));
kde em je EntitytManager;
Coz funguje, jak potrebuji, ovsem merge vzdy napred objekt nacita
pomoci jednoho SELECTU:
select ... from table t... where t.id = ?
Po te se provede spravne UPDATE (nebo DELETE) s WHERE klauzuli
kontrolujici verzi objektu. Ten prvni SELECT se mi zda zbytecny. Na
webu jsem nasel jen dve reseni:
1. Pouzivat rucni UPDATE (DELETE), coz je hlavne pro UPDATE dost neprakticke.
2. Pouzivat statefull beany s nejakym rozsirenym modem pro persistence
manager (nevim dost dobre, o co jde).
Chtel bych se zeptat, jak je v tomto pripade spravny postup a jestli
existuje nejake jednoduche reseni.
Dik
Ondra Medek
Další informace o konferenci Konference