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
>

Odpovedet emailem