Dne 19. Ĩerven 2009 16:25 Podlesak Kamil <[email protected]> napsal(a):
> Zdravim,
>
> Nejak jsem to v celem vlaknu nenasel, takze se explicitne zeptam:
> Jsou vsechny ty tabulky InnoDB? Pro jistotu to peclive overte, default je
> MyISAM!
Jsemsi temer jist ze jsou default tj MyISAM.
Posilam kod, ktery pouzivam na testovani konkurencniho pristupu
>
> Kamil Podlesak
>
>
Session session =
HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
List list = session.createQuery("from
ServerMessage").list();
ServerMessage sm = (ServerMessage) list.get(0);
ServerMessage smLocked = (ServerMessage)
session.get(ServerMessage.class,sm.getId(),LockMode.UPGRADE);
session.flush();
// v tuto chvili zkontroluji db, a provedu zmenu na radce se stejnym id, uspesne
session.save(smLocked);
session.flush();
sm = (ServerMessage) list.get(1);
smLocked = (ServerMessage)
session.get(ServerMessage.class,sm.getId(),LockMode.UPGRADE);
logger.info("smazan objekt: "+smLocked.getFlag());
session.delete(smLocked);
sm = (ServerMessage) list.get(2);
smLocked = (ServerMessage)
session.get(ServerMessage.class,sm.getId(),LockMode.UPGRADE);
logger.info("smazan objekt: "+smLocked.getFlag());
session.delete(smLocked);
sm = (ServerMessage) list.get(3);
smLocked = (ServerMessage)
session.get(ServerMessage.class,sm.getId(),LockMode.UPGRADE);
logger.info("smazan objekt: "+smLocked.getFlag());
session.delete(smLocked);
session.flush();
// v tuto chvili vsechny tri objekty jiz nejsou v db !
tx.rollback();
// rollback nevrati zmeny, v db jsou stale zmazany vsechny objekty
if(session.isOpen())session.close();