There's an interesting feature in Oracle that let's you register to database changes events http://download.oracle.com/docs/cd/E11882_01/java.112/e10589/dbchgnf.htm We could use that to invalidate second level caches properly even if a third-party app update the DB. Worth considering a prototype in Hibernate?