Skip to content

Código e anotações desenvolvidos durante o curso "Spring Data JPA: Repositórios, Consultas, Projeções e Specifications."

Notifications You must be signed in to change notification settings

juanfernandes-rrm/spring-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Spring Data

Neste curso, busco uma introdução ao ecossitema Spring, prestando muita atenção em conceitos importantes do funcionamento do Spring. Além disso, me aprofundo nos estudos de persistência de dados com Java, dando continuidade aos estudos de JDBC e JPA.

Anotações

Neste readme, procurei abordar os conceitos visto durante o curso, entretanto não me aprofundo tanto. No notion procuro me aprofundar mais no conceitos, utilizando código, esquemas, imagens, problemas que enfrentei e soluções para os mesmos, e mais conteúdo para complementar o estudo. Se você tem interesse nesses detalhes, pode acessar aqui.

Conceitos abordados no curso

  • Uso do repositórios
  • Geração de querys sem escrita de JPQL
  • Paginação e Ordenação
  • Querys dinâmicas através dos Specifications

Conceitos citados no curso

  • Anotações Spring
  • Injeção de dependências

Ambiente

  • JDK8+
  • IDE
  • Banco de dados
  • Client Banco

Criando aplicação

Será utilizado o Spring Initializr para criar a aplicação com a seguinte configuração:

Após gerar a aplicação, basta importá-la em alguma IDE.

Configurando o Banco de Dados

Através do mvn repository, busque a dependência do driver do Banco de dados escolhido para o projeto, e adicione no arquivo pom.xml. Neste caso, foi utilizado o driver do Mysql.

Com o driver do Banco de dados adicionado ao projeto, é necessário informar à aplicação as credenciais de acesso, isso é feito no arquivo application.properties.

Funcionamento do Spring Data

O Spring Data acopla todos os elementos listados abaixo. Dessa forma, não é preciso implementar vários objetos, como no caso do EntityManager da JPA, o Spring Data ficará responsável por isso.

Repository

Com o banco gerado, é possível popular as tabelas. Isso é feito através da interface Repository. O CrudRepository facilita a persistência de objetos, pois diferente da JPA, não é preciso implementar os métodos do CRUD, eles são gerados pelo Spring Data.

Operações CRUD

O Spring data facilita muito a implementação das operações de inserção de persistência. A interface CrudRepository oferece método para inserção/atualização, leitura e remoção de dados das entidades.

  • Salvar e Atualizar: Para salvar ou atualizar uma entidade no Banco de dados com o repositório é usado o método save().

  • Visualizar: Para visualizar registros do Banco de dados, o repository oferece alguns métodos: findById(), findAll() e findAllById().

  • Deletar: Para deletar, existe o método delete(), deleteById(), deleteAll(), deleteAllById().

Consultas

Além da consultas padrões oferecidas pelos métodos do CrudRepository, também é possível criar consultas personalizadas. Existe três formas de implementar essas consultas.

  • Derived Query: Queries criadas através de código Java.
  • JPQL: Queries criadas através de uma estrutura SQL, porém utilizando o nome das entidades Java.
  • Native Query: Queries padrões SQL.

A Derived Query é um recurso muito interessante. Desta forma, as queries são geradas através do nome do método, que segue um padrão para que o Spring data gere a query automaticamente.

Paginação

É um forma de consulta que visa realizar consultas mais rápidas através da paginação dos dados. No Spring data, isto é feito através dos Repositories que herdam de PagingAndSortingRepository. Com o repository Herdando dessa Classe, é possível passar um objeto Pageable para o método find(). Desse modo, é feita a paginação da consulta.

Projeção

A Projeção é utilizada quando é necessário criar queries personalizadas, que retornam apenas campos específicos dos registros. Uma Projeção é uma interface que define métodos get() para armazenar os atributos consultados. Também é possível utilizar classes DTOs para receber os dados das queries personalizadas. Não é possível criar queries personalizadas através do Derived Query, por isso é utilizado Native Query.

Consultas Dinâmicas

No Spring-data, Queries dinâmicas são feitas através de Specifications. A Specification é uma camada que abstrai toda a complexidade da API criteria, facilitando o desenvolvimento de consultas dinâmicas.

About

Código e anotações desenvolvidos durante o curso "Spring Data JPA: Repositórios, Consultas, Projeções e Specifications."

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages