Thanks for explaining. If this is so, it this sounds... unscalable.How so? At worst, the memory footprint doubles (plus maybe a logN factor), that sounds pretty scalable to me. ("non-scalable" is "more than NlogN overhead" in my book; I do not know of any substantially better way to implement optimistic locking unless you assume a VERSION field in each table.)
Note that Hibernate seems to be slowing to a crawl at a few 10,000 entities in a session cache.
I have been assuming it's a misimplementation, not a problem in the approach, but that's an unverified assumption so I may be wrong and it's still a problem with the approach in general, so I'd be highly interested in insights here.