Caching is an essential component in any ORM solution. Without it it is impossible to obtain a decent performance, and without a proper understanding of the mechanisms at work you will get bad performance.
Some products like TopLink will behave extremely weird with improper usage of the cache, and leave you crying. 😉 Do not embark on a ORM project without understanding the internals, especially of the cache, but also the product. Add distribution and synchronization to the mix and you got some nice complexity. 🙂
Two good articles on the internals of Hibernate can be found here:
- Truly Understanding the Second-Level and Query Caches
- Speed Up Your Hibernate Applications with Second-Level Caching
Of course both are grabbed of the front of hibernate.org. 🙂