Tecnologias Atuais de Redes - Aula 5 - VoIP [Apostila]
Spring Specification Tools - Simplificando consultas dinâmicas no Spring Data JPA
1. fagnerlima.pro.br
Fagner Lima
Especializando em Desenvolvimento de Aplicações para Web
Tecnólogo em Análise de Sistemas
fagnerlima.pro.br
Spring Specification Tools
Simplificando consultas dinâmicas no
Spring Data JPA
https://www.linkedin.com/in/fagnerlima
https://github.com/fagnerlima
2. Quem sou eu?
28 anos
+9 anos de XP
Especializando em Desenvolvimento de Aplicações para
Web
Tecnólogo em Análise e Desenvolvimento de Sistemas
Spring Specification Tools
26/08/2020 Pág. 2
3. Quem sou eu?
Web Designer
Tutor do curso Fullstack Angular e Spring
Analista Desenvolvedor Pleno
Programador Pleno
Professor Técnico de Informática
Spring Specification Tools
26/08/2020 Pág. 3
6. Spring Data JPA - Query Methods
Spring Specification Tools
26/08/2020 Pág. 6
(Spring Data JPA - Reference Documentation, 2020)
7. Spring Data JPA - Query Methods
Spring Specification Tools
26/08/2020 Pág. 7
(Spring Data JPA - Reference Documentation, 2020)
8. Spring Data JPA - @Query
Spring Specification Tools
26/08/2020 Pág. 8
(Spring Data JPA - Reference Documentation, 2020)
9. Problemas
Selecionar um subconjunto de objetos com base em alguns
critérios.
Verificar se apenas objetos adequados serão usados para
uma determinada função.
Descrever o que um objeto pode fazer, sem explicar os
detalhes de como o objeto faz.
Spring Specification Tools
26/08/2020 Pág. 9
(EVANS, FOWLER, 1997)
10. Solução
Spring Specification Tools
26/08/2020 Pág. 10
A Specification tem um método
isSatisfiedBy(anObject): Boolean que retorna “true”
se todos os critérios são atendidos por anObject.
Crie uma Specification que seja capaz de saber se
um objeto corresponde a alguns critérios.
(EVANS, FOWLER, 1997)
11. Spring Specification Tools
26/08/2020 Pág. 11
Specification
Design
Pattern
JPA
Criteria
API
Encadeamento
das regras de
negócio
Queries
dinâmicas
Domain
Driven
Design
12. Specification – Como implementar?
Hard Coded
Specification
(+) Fácil
(+) Expressivo
(-) Inflexível
Parameterized
Specification
(+) Mais flexível
(-) Ainda requer
classes para fins
específico
Composite
Specification
(+) Muito flexível, não
requer muitas classes
especializadas
(+) Suporte a
operações lógicas
(-) Investimento em
framework complexo
Spring Specification Tools
26/08/2020 Pág. 12
(EVANS, FOWLER,1997)
21. fagnerlima.pro.brfagnerlima.pro.br
Fagner Lima
Especializando em Desenvolvimento de Aplicações para Web
Tecnólogo em Análise de Sistemas
Spring Specification Tools
26/08/2020 Pág. 21
Spring Specification Tools
Simplificando consultas dinâmicas no
Spring Data JPA
https://www.linkedin.com/in/fagnerlima
https://github.com/fagnerlima