Conectando Spring Data JPA no banco de dados PostgreSQL

Quando estamos usando o framework Spring e necessitamos de uma conexão com banco de dados, é muito comum utilizarmos o Spring Data JPA, uma implementação do Hibernate para o universo Spring.

Usar o Spring Data irá nos fornecer uma séria de facilidades, pois ele trabalha de forma integrada com todo o ambiente Spring, e nos permite configurar de forma fácil utilizando o arquivo de properties do próprio projeto.

Nesse tutorial vamos ensinar como configurar uma conexão entre esse poderoso framework e um dos banco de dados mais utilizados o PostgreSQL.

Instalando o Spring Data JPA no projeto

Projeto Maven

Para adicionar o Spring Data JPA em um projeto Maven, precisamos alterar o arquivo pom.xml e adicionar duas novas dependências, o Spring Data JPA e o drive de conexão com o Postgres.

<dependencies>
    <!-- ...outras dependencias -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
pom.xml

Projeto Gradle

Em projetos Gradle precisamos editar o arquivo build.gradle e adicionar duas linhas dentro da propriedade dependencies e adicionar o Spring Data JPA e também o drive de conexão com o Postgres.

dependencies {
  //... outras dependencias
  implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  runtimeOnly 'org.postgresql:postgresql'
}
build.gradle

Configurando as propriedades de conexão

Agora que já temos as duas dependências instaladas, precisamos configurar as propriedades para conexão com o banco, string de conexão, usuário e senha.

Essas informações serão fornecidas no arquivo application.properties, que está localizado na pasta resources do nosso projeto, vamos precisar adicionar as linhas abaixo.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=drop-and-create
application.properties

Explicando cada propriedade

  • spring.jpa.properties.hibernate.dialect: Esta propriedade mostra ao hibernate qual o dialeto que será conversado com o banco, apesar dos bancos de dados usarem a mesmo linguagem sql, eles tem particularidades e por esse motivo precisamos indicar qual será o dialeto, como estamos usando o Postgres, vamos atribuir o valor: org.hibernate.dialect.PostgreSQLDialect
  • spring.datasource.url: Nessa propriedade vamos colocar a string de conexão propriamente dita no padrão JDBC, que fica dividida assim:
    jdbc:<drive>://<endereço-da-conexão>:<porta-de-conexão>/<nome-do-banco>.
  • spring.datasource.username: Aqui vamos indicar o usuário para acesso a base de dados.
  • spring.datasource.password: A senha definida para o usuário acima.
  • spring.jpa.hibernate.ddl-auto: O HIbernate tem a capacidade de gerar as tabelas no nosso banco de dados, com essa propriedade podemos indicar qual será esse comportamento, para isso temos algumas opções:
    • drop-and-create: Nessa opção ele deletará todas as tabelas existentes e criará novas toda vez que a aplicação for executada (uma ótima opção em ambiente de desenvolvimento quando está experimentando a criação das tabelas).
    • update: Nessa opção ele manterá as tabelas, mas fará atualizações nas tabelas todas as vezes que você alterar as classes de entidades.
    • none: Nessa configuração ele não criará tabelas, apenas se conectará a elas, nesse caso você precisa ter as tabelas previamente construídas na base de dados.

Uma consideração importante é não deixar habilitado para o Hibernate gerenciar as tabelas em uma aplicação de produção, você pode facilmente perder o controle das tabelas, além de não conseguir garantir a consistência de dados.

Na própria documentação oficial é sugerido que essa funcionalidade de gerenciar tabelas não é apropriada para ambientes produtivos.

Para produção recomendamos que seja utilizado um esquema de migrations, utilizando o Flyway por exemplo para controlar as migrações do banco de dados, versionando cada modificação.

Após a configuração

Agora que todas as configurações foram feitas, sua aplicação já está conectando com o banco de dados, basta mapear suas entidades usando as anotações padrão do Hibernate, como @Entity, @Table, @Id entre outras.

Agora você terá acesso a interfaces e classes que ajudaram a manipular informações das tabelas.

Links uteis

Mauricio Lima
Mauricio Lima

Bacharel em Ciência da Computação, profissional dedicado ao desenvolvimento de software e entusiasta da tecnologia.

Artigos: 65