AlgaWorks Insights #02
1.39K subscribers
602 photos
115 videos
544 links
Download Telegram
Veja porquê o Spring é uma excelente escolha para sua carreira.

Conheça os principais projetos Spring e saiba como iniciar seus estudos agora!

👉🏻 https://blog.algaworks.com/aprender-spring-agora/
Audio
Qual é a diferença entre JPA e NoSQL?

Confira nesse áudio! 😉
This media is not supported in your browser
VIEW IN TELEGRAM
Últimas horas para você aproveitar o desconto especial no treinamento Spring Framework Expert.

Adiante até 5 anos na sua carreira de programador Spring em apenas 4 meses..

Clique no link abaixo e saiba mais.

👉 http://bit.ly/sfe-turma-especial
Audio
Qual a diferença entre JPQL e HQL?

Confira a explicação do nosso instrutor Alexandre...
This media is not supported in your browser
VIEW IN TELEGRAM
💥O Lançamento Oficial do novo treinamento Especialista JPA já vai começar! 💥

E só quem estiver dentro dos Grupos VIP's no WhatsApp receberá os detalhes sobre o treinamento e participará do Lançamento Oficial. 🚀🚀

Clique no link abaixo para participar!
👉http://alga.works/ejpa-lancamento-oficial

⚠️ O grupo será aberto para tirar dúvidas na segunda, dia 17 de Fevereiro.
Os Query Methods do Spring Data JPA (SDJ) facilitam na criação de repositórios.

Criamos uma interface, adicionamos assinaturas de métodos, que devem começar com um dos seguintes termos: find, read, query, count ou get.

O SDJ cria a implementação da pesquisa em tempo de execução.

É só isso e já vai funcionar. Parece mágica!
Audio
Diferença entre JPA e JDBC 👆🏻
(1) No arquivo pom.xml, altere o packaging para "war" e coloque o escopo da dependência do Tomcat como "provided".

(2) Na classe de inicialização da aplicação, adicione a herança SpringBootServletInitializer.
A anotação @Query permite a customização de queries em métodos de um repositório do Spring Data JPA.

Utilizamos JPQL por padrão, mas também podemos usar queries nativas (SQL).
Os DTOs usados como Representation Model (API) precisam das anotações do Bean Validation para validar o que os clientes estão passando como entrada. Eles são validados quando os métodos dos controladores são chamados.

As entidades fazem parte do Domain Model e são validadas antes de persistir os dados no banco de dados usando JPA.

As alternativas são essas:

1) Adicionar as anotações do Bean Validation nos DTOs e também nas entidades. Vai ficar com regras duplicadas mesmo.

2) Adicionar apenas nos DTOs e deixar as entidades sem essas anotações.

Se todas as entradas de dados são pela API, não tem tanta necessidade da alternativa 1. Caso contrário, é importante proteger o Domain Model também.
SIM!

A configuração e deploy é simples, pois tudo está no Fat JAR, inclusive o container. Dá uma segurança danada saber que tudo que preciso está dentro de um JAR. É excelente para aplicações que rodam na nuvem.

A plataforma da AlgaWorks mesmo roda em um Fat JAR.
Media is too big
VIEW IN TELEGRAM
Vale a pena sair do Java EE e migrar para o Spring Boot?
Modele um recurso chamado "password-reset-requests" (solicitações de renovação de senha). Você cria uma nova solicitação fazendo um POST, assim:

POST /users/{id}/password-reset-requests

Teoricamente, você poderia requisitar a representação do recurso de coleção via GET:

GET /users/{id}/password-reset-requests

Mas talvez isso não faça sentido, então você pode ter apenas o verbo POST para criar um recurso de requisição de renovação de senha.

Ou seja, não é uma ação. É um recurso que você modelou.

Por falar nisso, não necessariamente precisa ter uma entidade (Domain Model) para você modelar um recurso na sua API.
Para suportar representações em formato XML em uma REST API desenvolvida com Spring MVC e Spring Boot, basta adicionar a dependência do jackson-dataformat-xml no pom.xml.

Por padrão, o Spring retorna os dados em JSON, mas se adicionarmos o header "Accept: application/xml" na requisição, teremos a resposta em XML.
Pergunta de um seguidor sobre o uso de DTOs em REST APIs com Spring.
Ao modificar os assets de uma aplicação Angular, versões antigas podem ficar no cache do browser.

Contornamos isso adicionando um hash no nome dos assets. Assim o browser vai entender que é um novo arquivo.

É só fazer o build da aplicação dessa forma:

$ ng build --prod --output-hashing=all