Conexão com banco de dados - Java e Spring Boot

Data da publicação: 01/09/2025.

Neste tutorial vou explicar como configurar e conectar uma programa Java usando Spring Boot com um banco de dados MySql

1 Como configurar o projeto

Nesse início, vou considerar que você já possui conhecimento de como iniciar um projeto Maven, porém caso tenha dúvida aconselho a ler meu tutorial da "Minha Primeira API" onde eu explico os passos para fazer isso.

Após abrir o projeto Maven no Eclipse, devemos colocar ou confirmar que temos as dependências necessárias para se comunicar com o banco de dados e para expor APIs.

As dependências que vamos utilizar são: Actuator para verificar a saúde da aplicação, Web para expor as APIs, Spring Data para ter praticidade em conectar com o banco de dados e MySql driver para conectar com o MySql.

O Spring Data utiliza o Hibernate por debaixo dos panos implementando a especificação JPA, que é uma especificação Objeto Relacional, ou seja, o Java utiliza o conceito de Orientação a Objetos e o banco de dados MySql utiliza o conceito de Relacionamento entre as tabelas, sendo assim a especificação JPA vem para facilitar a conversão do conceito de Orientação a Objetos para Relacionamento entre tabelas.

Segue na imagem abaixo as dependências que serão utilizadas nesse tutorial e que você deve adicionar no seu pom.xml.

Print screen da tela do Eclipse exibindo as dependências do arquivo pom.xml

Agora precisamos configurar os dados de conexão do banco de dados no projeto. Primeiro crie um novo banco de dados no MySql, no meu caso eu criei um banco de dados chamado "tutorial-java-spring-bd".

Print screen da tela do site do Spring Initializr

Após criar o banco de dados, abra o arquivo "application.properties" do seu projeto e adicione o conteúdo conforme image e coloque o usuário do banco de dados em "spring.datasource.username", a senha do usuário em "spring.datasource.password" e os dados do host do banco de dados em "spring.datasource.url".

Print screen da tela do Eclipse exibindo o arquivo de application.properties com dados de conexão com o banco de dados MySql

Repare que além dos dados de configuração do banco de dados, também temos outra propriedade chamada "spring.application.name" que contém o nome do projeto usado pelo Spring para logs e outras configurações internas, a propriedate "spring.jpa.hibernate.ddl-auto" que está com o valor "update", ou seja, ao criarmos a classe de entidade no Java e executar o programa será criada a tabela automaticamente no banco de dados MySql, e por fim também temos a propriedade "management.endpoint.health.show-details" do actuator com o valor "always", adicionamos essa propriedade para mostrar mais detalhes do programa no endpoint "/actuator/health". Mas calma, todo o que foi dito nesse parágrafo será mostrado em breve.

Por fim, para garantir que toda a configuração foi feita corretamente execute o seu projeto clicando com o botão direito do mouse em cima da classe principal da sua aplicação -> Run As -> Java Application. Caso tenha dúvidas aconselho a ver o tutorial do artigo "Minha Primeira API".

Caso tudo tenha funcionado, você verá a mensagem "Started Application in ..." no seu console.

Print screen da tela do Eclipse exibindo o console

Além disso também podemos usar o endpoint "http://localhost:8080/actuator/health" para verificar a saúde da aplicação, e repare que dessa vez existem mais informações, como a quantidade de disco disponível no seu computador, a pasta que esta seu projeto e a conexão com o banco de dados.

Print screen da tela do Google Chrome com a resposta do endpoint /health do Actuator

Pronto, agora temos certeza que nosso projeto esta configurado e funcionando corretamente e podemos seguir para criar nossa primeira entidade!

2 Criando a tabela direto pelo Spring Data e Hibernate

Agora vamos criar uma nova entidade chamada "Pessoa". Para isso crie um novo pacote chamado "entity" e dentro desse pacote crie uma nova classe chamada Pessoa. Lembre-se, qualquer dúvida tem mais detalhes no tutorial da Minha Primeira API em como fazer para criar pacotes e classes no Eclipse.

Abra a classe pessoa e anote ela com @Entity. Essa anotação serve para indicar para o Spring Data que essa classe representa uma classe no banco de dados.

Dentro dessa classe crie os atributos privados "Long id", "String nome" e "LocalDate dataDeNascimento". Existe uma tecla de atalho no Eclipse para importar classes, você precisa apertar CTRL + o, então o Eclipse irá importar as classes necessárias e caso alguma classe tenha mais de uma opção ele apresentará uma tela para você decidir qual classe quer importar.

Como os atributos são privados vamos gerar os Getters e Setters, para isso clique em Source no menu de cima e em "Generate Getters And Setters", selecione todos e clique em Generate.

Print screen da tela do Eclipse do menu para gerar gets e sets
Print screen da tela do Eclipse gerando gets e sets

Agora queremos que o id seja uma chave primária auto-incremental, para fazer isso basta adicionar duas anotações no campo id, "@Id" e "@GeneratedValue" com o parâmetro "strategy=GenerationType.IDENTITY".

Print screen da tela do Eclipse gerando gets e sets

Pronto! Nossa classe esta completa, agora execute a aplicação. Após executar a aplicação olhe seu banco de dados, se tudos estiver funcionado existirá uma nova tabela chamada Pessoa com as colunas "id", "nome" e "data_de_nascimento", sendo que a coluna "id" será a chave primária auto-incremental. Repare também nos tipos gerados.

Tela do PhpMyAdmin exibindo a tabela pessoa
Tela do PhpMyAdmin exibindo detalhes da tabela pessoa

3 Cadastrando, Consultando, Alterando e Excluindo dados via API

Agora que temos nossa tabela criada, bora criar um endpoint para incluir nossa primeira pessoa. Para fins de estudo, utilizaremos a mesma entidade como parâmetro da nossa API, porém no mercado de trabalho é bem comum que seja uma outra classe chamada DTO ao invés da entidade diretamente. Dito isso, crie um novo pacote chamado "controller" e dentro dele crie uma classe chamada "PessoaController". Anote essa classe com "@RestController" e "@RequestMapping("/pessoas")". Adicione todos os imports (lembre-se que pode utilizar CTRL + o).

Para receber os dados, crie um método chamado cadastrar e receba um objeto do tipo "Pessoa". Anote o método com "@PostMapping" e o parêmtro do método com "@RequestBody". A anotação "@PostMapping" serve para receber requisições http do tipo Post e a anotação "@RequestBody" serve para informar o Spring que é esperado um objeto json no corpo da requisição com o mesmo formato da sua classe. Além disso, como retorno do método, coloque a classe Pessoa.

Print Screen da tela do Eclipse exibindo a classe PessoaController

No mercado de trabalho temos um padrão de projeto que fala que a classe controller vai chamar uma classe service e a classe service vai chamar a classe repository que vai adicionar no banco de dados. Porém como o intuito desse tutorial é apenas exemplificar como se comunicar com banco de dados, vamos criar diretamente a interface Repository.

Crie um novo pacote chamado "repository" e dentro desse pacote crie uma interface chamada "PessoaRepository". Repositórios são classes/interfaces que vão fazer a comunicação com o banco de dados, ou seja, eles que vão ser responsáveis para efetivamente enviar os dados. Para que o Spring identifique sua interface como um repositório de Pessoa, anote a interface com "@Repository" e extenda ela com a interface "JpaRepository". Quando você estiver extendendo essa interface você precisará passar dois parâmetros, qual a classe da entidade do banco de dados desse repositório, que no caso é "Pessoa" e e qual o tipo da chave primária, que no caso é "Long".

Print Screen da tela do Eclipse exibindo a interface PessoaRepository

Agora abra a classe "PessoaController" novamente e vamos "injetar" a dependência "PessoaRepository" dentro dela. A injeção de dependência é um padrão de projeto que o Spring utiliza para reaproveitar os objetos, ou seja, quando você anotou a interface PessoaRepository com "@Repository" o Spring automaticamente vai criar um objeto da sua interface e vai deixar ele disponível para ser utilizado, e agora nós vamos aprender a como utilizá-lo. Crie um atributo privado dentro da classe PessoaController do tipo PessoaRepository, ficando: "private PessoaRepository pessoaRepository;". Agora para informar o Spring que você quer injetar a dependência, basta anotar esse atributo com "@Autowired" e pronto, ele será populado com o objeto. Nas novas versões do Spring Boot é possível também injetar a dependência deixando o atributo como final e recebendo ele no construtor, mas nós vamos utilizar a anotação mesmo.

Pronto, praticamente tudo já está preparado, falta apenas chamar o método "save" do objeto "pessoaRepository" passando a pessoa como parâmetro e pronto, a pessoa já será salva.

Print screen da tela do Eclipse exibindo a class PessoaController e a estrutura base final do projeto

Agora para testar vamos utilizar uma aplicação chamada Postman, ela nos permite fazer chamadas HTTP do tipo Post e passar um objeto json no corpo da requisição.

Primeiro execute o seu projeto novamente, e então abra o Postman e crie uma nova requisição, então mude o método para POST, selecione "raw", selecione "JSON" e coloque '{"nome": "A Primeira Pessoa", "dataDeNascimento": "1985-05-01"}'. Após preencher tudo clique em Send e se funcionar você recebará a resposta na tela abaixo com o novo id cadastrado, pois ele é auto-incremental, sendo assim você não passa na requisição e ele aparecerá na resposta. Acontece isso, pois o padrão do Spring Data é já retornar os dados atualizados após salvos.

Print screen da tela do Postman para cadastrar uma nova pessoa
Print screen da tela do Postman de resposta do cadastro da nova pessoas

Pronto! Agora para fazer os métodos de Consultar, Alterar e Excluir é bem fácil.

Vamos começar com o de Consultar. Para simplificar vamos retornar todas as pessoas cadastradas, porém lembre que retornar todos os registros cadastrados pode ser perigoso no ambiente real, pois caso tenha milhões de registros pode afetar o desempenho do banco de dados e do seu programa! Mas para nosso estudo tudo bem. Crie um método chamado "consultar" que retorne uma lista de Pesssoa e no retorno desse método use o "pessoaRepository.findAll();". Anote seu método com "@GetMapping" e pronto, você ja pode executar seu programa novamente testando o endpoint "http://localhost:8080/pessoas" direto no navegado ou no Postman, pois esse é um método GET.

Print screen da tela do Eclipse com a classe PessoaController com o método de consulta
Print screen da tela do navegador Chrome com a resposta do método de consulta

Agora vamos fazer o método de alteração. Crie um novo método na sua classe de controller, esse método retornará uma Pessoa, ele se chamará "alterar" e receberá uma pessoa com a anotação "@RequestBody", ficando "public Pessoa alterar(@RequestBody Pessoa pessoa)". O Spring Data trata o método save do repositório como um "upsert", isso significa que ele insere quando o registro não existir (no nosso caso quando o id for nulo ou um que não existe) e atualiza quando o registro já existir, sendo assim também utilizaremos "pessoaRepository.save(pessoa)" no retorno do nosso novo método. Por fim anote esse novo método com "@PutMapping" e pronto, ele já pode ser testado. Execute a sua aplicação e no Postman utilizar o método PUT e passe no corpo da requisição '{"id": 1,"nome": "Alteração de pessoa","dataDeNascimento": "1999-11-25"}', se tudo funcionar esses mesmos valores serão exibidos na resposta.

Método alterar da classe PessoaController
Print screen da tela do Postman de request e response do PUT, alterar Pessoa

Por último, vamos fazer o delete, crie um novo método chamado "deletar" que retorna void e recebe um Long id. Esse parâmetro deve ser anotado com "@RequestParam", a assinatura ficará: "public void deletar(@RequestParam Long id)". Dentro desse método chame o método "pessoaRepository.deleteById(id)". Agora anote seu novo método com "@DeleteMapping" e pode executar a aplicação. Para testar vá no Postman, altere o método http para DELETE, clique em "Params", insira em Key o valor id e em Value o valor 1 e clique em send. Como resposta você receberá "Status 200 OK", isso significa que funcionou! Caso você queira confirmar, você pode ir direto no banco de dados e verá que o registro foi excluído.

Método deletar da classe PessoaController
Print screen da tela do Postman de request e response do DELETE, deletar Pessoa

Conclusão

Após fazer esse tutorial você conseguiu comunicar com o banco de dados através do Java usando Spring Boot e Spring Data. Também conseguiu executar os métodos HTTP POST, GET, PUT e DELETE para Cadastrar, Consultar, Alterar e Deletar dados do banco de dados. Também aprendeu a configurar o projeto para criar tabelas automatimente, exibir mais dados no actuator e algumas coisas a mais, sendo assim PARABÉNSSS por ter chegado até aqui! Espero que continue evoluindo e que tenha te ajudado. Até a próxima!

Assista também o vídeo no youtube