Spring Data JPA (im Folgenden: JPA) ist im Abstraktionsgrad über Spring Data JDBC (im Folgenden: JDBC).
Mit JDBC müssen eigene Abfragen in SQL geschrieben werden, die „result sets“, also die zurück gelieferten Daten, müssen selbst geparst werden und sollen aus Objekten datenbank-konforme, ggf. relationale Daten oder aus diesen Daten wieder Objekte erstellt werden, muss auch das per Hand erfolgen. Das bedeutet unter anderem, man muss die SQL der jeweiligen Datenbank kennen.
Bei wenigen Datenbank-Aktionen ist JDBC eine große Erleichterung verglichen mit den noch weniger abstrahierten Zugriffen über direkte Sockets und der direkten Verwendung des jeweiligen Datenbank-Drivers.
Diese beiden Varianten sind die beiden schnellstmöglichen Wege, Datenbank-Zugriffe mit Java zu erreichen.
Mit JPA wird eine weitere Abstraktion hinzu gefügt. Über Entities (Objekte) werden Einträge in einer Datenbank (Tabellen und Felder) über Annotationen in den jeweiligen Klassen den Objekten und deren Eigenschaften zugeordnet. Mit Spring wird dazu ein Repository verwendet, eine Klasse, die sich um die CRUD-Operationen (create, read, update, delete) der jeweiligen Entity-Klasse kümmert.