Java Persistence API (Atualmente chamada de Jakarta Persistence) é uma API padrão da linguagem Java que descreve uma interface comum para frameworks de persistência de dados.
A JPA define um meio de mapeamento objeto-relacional para objetos Java simples e comuns, denominados beans de entidade.
Originou-se num projeto comum entre os desenvolvedores para se criar o padrão. Fortemente baseado nas ideias trazidas pelo Hibernate, tanto que o líder da primeira versão dessa especificação é o criador do framework.
Em resumo, é utilizado principalmente para conexão e acesso a banco de dados relacionais (SQL).
Spring Data é um projeto Spring Source de alto nível. Seu objetivo é unificar e facilitar o acesso aos diferentes tipos de armazenamentos de persistência, tanto sistemas de banco de dados relacionais quanto armazenamentos de dados NoSQL.
O Spring Data JPA lida com a maior parte da complexidade do acesso ao banco de dados baseado em JDBC e ORM (Mapeamento Objeto Relacional). incluindo seus próprios recursos, como a implementação sem código do padrão de repositório e a criação de consultas de banco de dados a partir do nome do método.
Ele reduz o código clichê exigido pelo JPA. Isso torna a implementação de sua camada de persistência mais fácil e rápida, sempre visando melhorar a implementação de camadas de acesso a dados, reduzindo o esforço à quantidade necessária.
Existem três recursos principais do Spring Data JPA:
public interface PessoaRepository extends JPARepository<Pessoa, Long>
{
// Suas implementações vem aqui
public Optional<Pessoa> findByName(String name);
}