If you have ever puzzled over how to implement persistence code in a well-factored reusable configurable manner this is a book for you.
Each pattern teaches us about the persistence problems that manifest themselves between object-oriented applications and relational databases. Each pattern tends to deal with one prevalent problem, along with an appropriate class-based solution to deal with it.
Unlike the original 'Design Patterns', where patterns focused on domain-generic software problems, each pattern is framed by a particular domain problem. Many of the patterns are described as specialisations of the original patterns. Indeed, few of the patterns are new class relationships; it is their application and appropriateness to particular problems that gives them their name and value.
The elegance of the patterns is manifest by their clarity and the simplicity with which they are integrated to resolve problems of persistence. I found the text to read smoothly with a consistent level of difficulty - interesting but not demanding.
The examples are provided in Java; a little imagination will be required for C++ purists to reinterpret some of the author's style, such as a tendency to use class Object to pass arguments. The example domain objects are overly basic - a few pages are wasted listing get/set operations for all class members - but their simplicity may reduce the clutter of the patterns' presentation.
You will need to know about OO programming, design patterns, the basics of using relational databases and SQL to benefit most from this book. Recommended.