There is no magical bullet for the type of scenarios that you describe. You may want to add the case of multiple users.
One of the mechanisms that Hibernate offer is the opportunistic locking. You should read the details about Transactions and Concurrency here
http://www.hibernate.org/hib_docs/v3/re ... tions.html
For the case of a single user, you may want to keep a local model inside the browser with the state of (some) objects. Everytime you send an object you can send all of the object properties, this way you will reduce concurrency problems. Since the transit times may be different for different requests you can do something like the following:
1. UI updates the model and sets flag
2. you have an updater thread that sends modifications to the backend
3. you can have some strategy that serializes the request and/or uses a quiet time (fire every 5 seconds, if model dirty and last mod time more than 5 seconds ago then sends backend request)
I hope this helps :)
Marius