Blog post sobre de um projeto aplicação REST API em Spring + Hibernate e plataforma Java.
Esse Blog Post, trata-se de uma API REST que precisará controlar a aplicação de vacinas entre a população Brasileira.
Tecnologias utilizadas
Qual o papel e o benefício que essas tecnologias trazem para a implementação do código?
Java - Não é apenas uma linguagem de programação, mas também uma plataforma de desenvolvimento, as aplicações são bem flexíveis e rodam em diversas plataformas, existem diversos frameworks que facilitam o desenvolvimento e implementação do código, o bytecode gerado a partir da compilação do Java é interpretado numa JVM que faz o sistema operacional não ser um empecilho. Por ser uma linguagem POO, traz grandes benefícios a implementação, pois a estrutura se equipara a realidade, outro ponto é, a reutilização de código, que o deixa mais legível e economiza linhas e tempo de codificação.
Hibernate - é uma implementação da JPA, que mapeia (ORM) as classes Java para tabelas do banco de dados, transformando os tipos de dados Java para tipos SQL, permite armazenar **POJOs **diretamente nas bases de dados e definir relacionamentos entre as classes, representando o Banco de dados. Fornecendo consultas e maior facilidade para retorno dos dados, que reduzem o tempo que seria gasto na persistência, como a codificação manual do SQL.
API REST - é uma interface de programação de aplicações que utilizam uma API para acessar aplicações back-end, a comunicação é feita conforme os padrões definidos pelo estilo de arquitetura REST. Traz benefícios como flexibilidade, que permitiu criar uma API que atendesse as necessidades sem precisar instalar software ou bibliotecas adicionais ao criar a aplicação.
Tecnologias do mundo Spring
Qual o papel e o benefício que essas tecnologias trazem para a implementação do código?
Spring - é um framework open source muito utilizado na plataforma Java. Essa ferramenta é baseada nos padrões de projeto inversão de controle (IoC) e injeção de dependência. Com Spring, pode-se ter um alto desempenho na aplicação, segurança e facilidade. Várias tecnologias nesse framework, simplificam o desenvolvimento de código de infraestrutura e focalizam em velocidade e produtividade que auxiliaram muito na implementação do código.
Spring MVC - esse framework auxilia na produção de aplicações Web como esta, temos também que o MVC trás uma implementação fundamental, que é o mapeamento dos dados contidos na requisição para objetos da camada de modelo, a delegação das responsabilidades de processamento de dados para outros componentes e processá-las e enviá-las em forma de respostas para o usuário, garantindo a segurança e permitindo ao programador focar nas regras de negócio da aplicação.
Spring Data - Provém código de infraestrutura, converge projetos diferentes com o intuito de unificar e facilitar o acesso a fonte de dados, como banco de dados relacionais e não relacionais. Essas ações tornam a implementação da camada de persistência mais fácil e rápida.
Spring Boot - Essa ferramenta permite que projetos Spring sejam iniciados mais rapidamente, a partir do princípio da Convenção sobre Configuração, que busca reduzir o número de decisões a serem tomadas no momento de configurar as diferentes áreas de uma aplicação.
Até o momento, todas as tecnologias utilizadas foram explicadas, trouxe as funcionalidades, como essas tecnologias seriam benéficas na implementação do código e exemplos. A partir de agora, trataremos da estrutura da aplicação, mostrando passo a passo, como esse código foi implementado, pacote por pacote e classe por classe...
Propriedades de configuração da aplicação
application.properties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zup?useTimezone=true&serverTimezone=UTC
spring.datasource.username=camilly
spring.datasource.password=camily
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
server.port=8088
spring.jpa.show-sql=true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.properties.hibernate.show_sql = true
spring.jpa.properties.hibernate.format_sql = true