A service tier that implements its persistence based on JPA can profit hugely from the second-level cache that is managed transparently by the JPA provider (e.g. Hibernate, Toplink/Toplink Essentials etc.). When this cache is activated, it holds instances of the persistent classes as soon as they were loaded from the database for the first time. There may be vendor-specific extensions to configure the cache behaviour.
The JPA standard also supports optimistic locking by having a timestamp or version field that is used to avoid data corruption when concurrent updates occur. As this mechanism relies on the data contained in the database it can also be used when other applications or services want to update the data - just include the version field of the record in the update and you're done.
When it comes to caching, the behaviour seems to be that the JPA provider (at least Toplink Essentials) does not notice changes in the database that aren't performed using the EntityManager.
Is this really the default behaviour and the responsibility to update/invalidate the JPA provider cache is up to the application? If yes, this seems quite counter-intuitive to the fact that most databases are used by many different applications.