anstetts wrote:
Hallo zusammen,
nachdem im englischen Forum keiner auf meine Frage eingeht probiere ich es mal hier :)
Ich würde gerne wissen wie man mit Hibernate einen Table Lock erhält...
Es geht darum, dass ich sicherstellen muss, dass nur 1 Transaktion gleichzeitig auf eine bestimmte Tabell zugreift. Wie kann ich das mit Hibernate machen ?
Im speziellen nutze ich JPA, aber eine generell Lösung würde fürs erste auch schon langen.
Gruss, Tobias
Die JPA- Spezifikation ist an dieser Stelle wenig konkret. Die lock-Methode
muss nur lost-updates verhindern. Soweit ich es beurteilen kann ist die lock-Methode von JPA weitgehender Mumpitz. Man kann sich durch einen Typecast auf den Hibernate-Entitymanager die Hibernate-Session besorgen und dann vermutlich im Prinzip all die Dinge tun, die auch in Hibernate möglich waren. Natürlich verliert man damit die Austauschbarkeit des Entitymanagers, aber immer noch besser als native Queries die dann im Fall von Oracle z.B. dbms_lock aufrufen würden.
((EntityManagerImpl) em).getSession().lock(customer, LockMode.UPGRADE_NOWAIT);
LockMode.UPGRADE entspricht Cursor vor update in Oracle
MfG
Manfred Quasten