1.2 The paradigm mismatch
"The problem of granularity" identifies the mismatch between Java type definitions and the obstacles of SQL user-defined types (UDT).
"Unfortunately, UDT support is a somewhat obscure feature of most SQL database management systems and certainly isn't portable between different systems.
"The problem of subtypes" reminds us that inheritance and polymorphism has no place in relational theory.
"The problem of identity" shows us that Java objects are distinguished by tests for equality (== and !=) while the relational world uses the notion of the primary key.
"...we'll recommend that you use surrogate keys whenever possible. A surrogate key is a primary key column with no meaning to the user."
The "problems relating to associations" compare Java object references (directional) to foreign key associations (non-directional).
"The problem of object graph navigation" refers to the "fundamental difference in the way you access objects in Java and in a relational database." The dreaded "n+1 selects problem" is hidden here.
"This mismatch in the way we access objects in Java and in a relational database is perhaps the single most common source of performance problems in Java applications."