Harnessing Hibernate is the latest in a series of books I got recently to review (I have been a little too busy to read through all of them...). The book caught my interest right away since I have used Hibernate on a pretty big enterprise project a while ago and was involved in the solving of some performance issues faced by another large project due to their mishandling of some Hibernate code.
I like how Hibernate makes building data services a cinch - but more often than not, it worries me that a lot of people don't really understand Hibernate the way they need to before they can use it in large-scale applications with emphasis on scalability and performance. Understanding what goes on under the hood of Hibernate fetches goes a long way in avoiding silly mistakes like loading a set of large, linked objects into the memory when you probably needed just the top-level object or a couple of properties.
Also, a lot of books seem to focus on working code and simple samples - prototypes that work, but are ultimately not much of use in a real-world situation. I consider it a strength of this book that it doesn't take the readers for granted. The authors do a great job of explaining all concepts involved in getting a Hibernate application to run - including build tools like Maven. It has clearly defined examples, possible errors and ways to get around the errors. Of course, that doesn't mean there isn't much here for experienced developers - there are some really neat tips and tricks that might go over the heads of those that are not advanced enough to understand the concepts.
I would recommend this book readily whether you are a beginner looking to learn Hibernate or an advanced devloper hoping to refresh their knowledge or find something they might have missed before.