Although not novice, I am trying to learn spring framework (again!) in order to be sure that I really understand this. I have got fair idea on core Spring (DI). Now, I am focusi
Spring Data JPA is not a JPA provider. It is a library/framework that adds an extra layer of abstraction on the top of our JPA provider (like Hibernate).
So you can't use Spring Data without a JPA provider like Hibernate, EclipseLink, etc.
Spring-data-jpa, as you're saying, offers more that just the classical Spring-JPA integration. With JPA/Hibernate integration, you get mainly
With Spring-data-jpa, you get all that, plus (among other things)
This is just a tiny introduction. For more help, read the documentation.
when you talk about spring + hibernate
hibernatesessionfactory
, open transaction and commit. Lot of pre and post work for each operation.hibernatetemplate
which internally using hibernatesessionfactory
. So you dont need to care much about pre and post code while doing these operations.Now lets talk about spring + data jpa
crud repository
, and spring will inject its implementation at run time.Repository
interface. And can use this across the application.sql or jpql.
I find this link helpful:
JPA is the Java Persistence API, which is Java's standard API for object-relational mapping.
JPA is only an specification - you need an implementation of it to be able to use it. Hibernate is one of the most well-known and most used implementations of JPA, but there are others, such as EclipseLink JPA.
The Spring Framework is a large framework to help you write enterprise-grade software easier. It contains support for many Java technologies, including JPA.
The Spring Framework consists of a collection of projects, and one of these projects is Spring Data.
The goal of Spring Data is to make it easier to work with different kinds of databases, from traditional relational databases to NoSQL databases. Spring Data supports JPA via the Spring Data JPA subproject.
To write a program that uses JPA, you need at least a JPA implementation, such as Hibernate.
If you are using the Spring Framework for your application, you will most likely want to use Spring Data JPA together with Hibernate.