In a situation where you dont own the database and need to see changes in "realtime", you are forced to use commit-option b or c. The problem is that the standard container configuration for entity beans leads to heavy locking if simultaneous transactions uses the same entity bean. To avoid heavy locking you declare getters as read-only. Unfortunately those getters will use the cache and then you will not see the changes in "realtime".
I've switched to using another container configuration for entity beans, entity per transaction. Then I dont need the read-only getters and the locks are gone.
Dont try the cachepolicy code shown in the previous post, its an antipattern.