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();

Odpovedet emailem