That's how Hibernate was executing the statements when I wrote the article.
I spotted the difference when writing the book, but didn't have time to
update the article.
I changed the SQL output to reflect the current behavior which adds a FOR
UPDATE clause when fetching the entity.
I also rephrased that sentence since it's no longer relevant to the current
On Thu, Jul 27, 2017 at 4:46 PM, Arnold Gálovics <galovicsarnold(a)gmail.com>
I'm a bit confused with the mentioned lock mode.
*The doc says the following:*
*"The entity is locked pessimistically and its version is incremented
automatically even if the entity has not changed."*
I'm checking this with an H2 DB and the current behavior is the following:
- the version attribute is incremented in advance, right after fetching
(I'm using EntityManager#find here, but with lock, it should be the same)
- the original fetching query contains the SELECT ... FOR UPDATE clause
Knowing this, it seems for me that this lock mode involves a DB lock,
however the doc doesn't say anything about this, especially whether it's a
shared or exclusive lock.
I've checked Vlad's article about this.
It says the following: "*The PESSIMISTIC_FORCE_INCREMENT naming might lead
you into thinking that you are using a pessimistic locking strategy, while
in reality this Lock Mode is just an optimistic locking variation."*
So now I'm unsure what this really is.
Could you please briefly describe it to me if I missed something?
Thanks in advance!
hibernate-dev mailing list