What are the typical real life scenarios where one would choose Spring Data JDBC / Spring Data JPA vs Hibernate? I would like to understand the scenarios where either of th
The thing is Spring data for jpa is an abstraction over jpa, which is an abstraction over JDBC. If offer nice features, even if jpa is usable without it. It becomes really powerful with Spring data rest.
But the more a framework does for you, the more you need to understand underlying technology. It is even more true if you use spring-data-rest. The best is to start by understanding sql (design and queries), then jpa (lazy loading, instance states, entities, embeddables, caches, queries, transaction synchronization).
Then you try spring-data-jpa and decide if it brings value to you project. For save, update, delete and find by id operations it is basically a wrapper around persist, merge, remove and find method of EntityManager. The main advantage of Spring data JPA is the query support, but querydsl is also a nice option. In both case it requires a clear understanding of how JPA works. The first thing to do is to turn on SQL logging to see if, for a given db access, your jpa implementation execute queries that a dba would consider correct. For instance, eager loading on an entity which is not in cache results in 1+n select, you unit test will pass and problems will start in production. spring-data-jpa will not solve the problem for you.
There are many spring-data-* beside spring-data-jpa, some of them also offer mapping annotations (spring-data-cassandra for instance), which is useful when there is no object-db mapping.