Prevedte si je na InnoDB. Obecne vzato muze mit MyISAM v nekterych vyjimecnych pripadech opodstatneni, ale musite naprosto presne vedet co chcete delat a jak.
Kamil Podlesak > -----Original Message----- > From: [email protected] [mailto:[email protected]]on > Behalf Of Pavel Nemec > Sent: Friday, June 19, 2009 4:36 PM > To: Java > Subject: Re: zamikani tabulek mysql+hibernate > > > 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(); >
