Jak presne Hibernate *zamyka *na MySQL najdes v danem dialectu. Jsou tam na to metody. Pricemz pesimisticke zamky (coz je i LockMode.UPGRADE) umi Hibernate jen pokud ho umi databaze (Typicky pres select ... for update). A vetsinou to zamkne jen jeden radek/stranku (zalezi na granuralite na dane DB a dane situaci - eskalace zamku). Zamknout celou tabulku je nutne pomoci SQL prikazu.
Optimisticke zamykani umi Hibernate na kazde DB a dela ho automaticky pri kazdem updatu, vynutit je ho mozne pomoci LockMode.FORCE. Vice viz http://docs.jboss.org/hibernate/stable/core/reference/en/html/transactions-optimistic.html Lukas 2009/6/16 Pavel Nemec <[email protected]> > Dobry den, > mam docela specificky problem. > 2 aplikacni servery (jboss) na kterych bezi hybernate a mysql. Mysql > je nastavna tak ze se replikuje na obou serverech a tvari se tedy > jako jedna databaze. > > S databazi komunikuji vyhradne pres Hibernate. Jsem v situaci, kdy oba > servery budou ve stejny cas pracovat nad jednou tabulkou. Hledal jsem > moznost jakym zpusobem zamknout celou tabulku, s kterou potrebuji > pracovat. Nicmene vse co jsem nasel, je > session.get(Object, Lock.UPGRADE). > S tim ze je u navodu vetsinou poznamka, ze to funguje urcite na > Oraclu. Jestli tomu dobre rozumim, tak hibernate resi konkurencni > pristup zejmena pri vicenasobnem pristupu prave pres hibernate > (optimisticky pristup s verzovanim). Vypada to ze pristup pres primo > pres mysql resit neumi (pesimisticky pristup a zamikani db). > > Muze mne nekdo prosim spravne nasmerovat? > > Predem dekuji, > Pavel >
