Criando nosso primeiro serviço REST com SpringBoot – Parte 2

Introdução

Essa é a segunda parte deste tutorial, caso não esteja acompanhando, pode acessar a primeira parte em:

Criando nosso primeiro serviço REST com SpringBoot – Parte 1

Persistência e Base de Dados

Continuando nosso tutorial, vamos mudar o nosso webservice para o uso de uma base de dados. Para isso, precisaremos inserir a dependência da biblioteca de persistência e de acesso ao banco que será utilizado. Para esse projeto vamos usar o spring-data-jpa para persistência dos dados em conjunto com o banco de dados H2 Database.

Para incorporar o spring-data-jps vamos incluir a dependência abaixo em nosso pom.xml.

De acordo com a base de dados escolhida, devemos fazer a inclusão do Driver JDBC em nosso projeto. Nós vamos utilizar o H2 Database, que permite que prototipemos projetos rapidamente, já que em um única biblioteca temos o Driver JDBC e o próprio Database Manager. Vamos insirir o bloco de dependência abaixo no pom.xml

O spring-data, abstrai o acesso a base de dados, fornecendo as principais operações atráves da implementação da interface CrudRepository ou JpaRepository. Assim, já teremos métodos como findAll(), findOne(K id), save(T model) e etc.

Com base nisso vamos agora criar uma nova classe em nosso projeto que será reponsável pelas chamadas ao banco de dados.

Precisaremos adaptar nosso POJO adicionando as anotações referentes ao spring-data (JPA).

Dessa forma toda a camada de persistência estará pronta para ser usada.

Vamos agora acertar os últimos detalhes do banco de dados. Adicione os seguintes itens no seu application.properties.

Os primeiro itens definem as configurações de acesso ao banco. E o último informa que toda vez que mudarmos o nossa entidade (nosso pojo) as alterações devem atualizar a estrutura das tabelas no banco.

Juntando tudo

Vamos agora fazer tudo funcionar junto. Vamos alterar a nossa classe BookController injetando uma dependência ao nossa classe BookRepository da seguinte forma:

Dessa forma, o Spring automaticamente carregará nessa variável a instância atual do BookRepository.

Vamos alterar também os métodos que criamos anteriormente em nossa BookController.

O método de listagem agora retornará a chamada do método findAll().

Já o método de busca por id, vai retornar o método findOne(K id).

Execução

Podemos executar agora nosso projeto através do comando mvn spring-boot:run e acessando:

O comando provavelmente deverá retornar vazio [], já que não temos dados em nossa base.

Inserindo na mão

Para termos acesso ao nosso banco de dados podemos adicionar as seguintes linhas de configuração no arquivo application.properties

Essas linhas, habilitarão uma interface de gerenciamento do banco de dados que ficará acessível em:

Nessa interface teremos acesso ao banco de dados, onde poderemos mudar a estrutura ou adicionar dados para exemplo.

Automatizando a carga de dados

Podemos também colocar scripts para criação da tabela e para inserção de dados junto ao início da aplicação.

Vamos colocar as duas linhas no application.properties.

Vamos agora criar na pasta src/main/resources um arquivo schema.sql com o seguinte contéudo:

E também criaremos um arquivo data.sql com o seguinte conteúdo.

Ao iniciarmos a nossa aplicação novamente a tabela já será criada, e os dados serão inseridos. Agora poderemos novamente chamar a aplicação em:

E veremos os dois novos livros cadastrados.

Inserindo dados

Para podermos inserir dados vamos mudar a nossa controller adicionando uma novo método mapeado para um endpoint dentro da nossa BookController.java

Podemos testar a inserção dos dados executando o comando curl, (caso não tenha baixe através do link Curl Download, ou usar um plugin de teste de API Rest para o Chrome, como por exemplo o Yet Another REST Client ou outro)

O nosso retorno será algo assim:

Podemos chamar nosso serviço de listagem novamente

E veremos os dois novos livros cadastrados.

Em breve publicaremos a parte 3 desse tutorial, aguarde.

Leave a Reply

Pin It on Pinterest