Spring Boot

SpringBoot

Tutorial SpringBoot: Configuración base de datos PostgreSQL

Aprende a configurar PostgreSQL en Spring Boot con dependencias, propiedades y pool de conexiones para entornos de desarrollo y producción.

Aprende SpringBoot y certifícate

Configuración base de datos PostgreSQL

Spring Boot facilita enormemente la configuración de bases de datos mediante su sistema de autoconfiguración. Para trabajar con PostgreSQL, necesitamos establecer la conexión y configurar las propiedades básicas que permitan a nuestra aplicación comunicarse con la base de datos de forma eficiente.

Dependencias necesarias

Para integrar PostgreSQL en nuestro proyecto Spring Boot, necesitamos agregar las dependencias correspondientes en nuestro archivo pom.xml:

<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>

La primera dependencia incluye Spring Data JPA junto con Hibernate como proveedor JPA por defecto. La segunda proporciona el driver JDBC específico para PostgreSQL, marcado como runtime porque solo se necesita durante la ejecución.

Configuración en application.properties

El archivo application.properties es donde definimos los parámetros de conexión a nuestra base de datos PostgreSQL:

# Configuración de la base de datos
spring.datasource.url=jdbc:postgresql://localhost:5432/mi_aplicacion
spring.datasource.username=usuario_db
spring.datasource.password=contraseña_db
spring.datasource.driver-class-name=org.postgresql.Driver

# Configuración de JPA/Hibernate
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Parámetros de conexión esenciales

La URL de conexión sigue el formato estándar JDBC para PostgreSQL: jdbc:postgresql://host:puerto/nombre_base_datos. En desarrollo local, típicamente usamos localhost:5432 como host y puerto por defecto.

Las credenciales de acceso (username y password) deben corresponder a un usuario PostgreSQL con permisos suficientes para crear, leer, actualizar y eliminar datos en la base de datos especificada.

Configuración de Hibernate

El parámetro spring.jpa.hibernate.ddl-auto controla cómo Hibernate gestiona el esquema de la base de datos:

  • create: Elimina y recrea las tablas en cada inicio
  • create-drop: Crea las tablas al inicio y las elimina al cerrar la aplicación
  • update: Actualiza el esquema existente sin eliminar datos
  • validate: Valida que el esquema coincida con las entidades
  • none: No realiza ninguna acción automática

Para desarrollo, update es la opción más práctica ya que preserva los datos existentes mientras aplica cambios estructurales necesarios.

Configuración de logging SQL

Las propiedades show-sql y format_sql son especialmente útiles durante el desarrollo y depuración:

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true

Estas configuraciones permiten visualizar las consultas SQL generadas por Hibernate en la consola, facilitando la comprensión y optimización de las operaciones de base de datos.

Pool de conexiones

Spring Boot configura automáticamente un pool de conexiones usando HikariCP por defecto. Podemos ajustar sus parámetros según nuestras necesidades:

spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.idle-timeout=300000

El pool de conexiones mejora el rendimiento de la aplicación reutilizando conexiones existentes en lugar de crear nuevas para cada operación de base de datos.

Verificación de la configuración

Una vez configurada la conexión, Spring Boot intentará establecer la conexión automáticamente al iniciar la aplicación. Si la configuración es correcta, veremos en los logs mensajes similares a:

HikariPool-1 - Starting...
HikariPool-1 - Start completed.

Si hay problemas de conexión, la aplicación fallará al iniciar con mensajes de error descriptivos que nos ayudarán a identificar y corregir la configuración incorrecta.

Configuración por perfiles

Para diferentes entornos (desarrollo, pruebas, producción), podemos usar perfiles de Spring creando archivos como application-dev.properties:

# application-dev.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/mi_app_dev
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true

# application-prod.properties  
spring.datasource.url=jdbc:postgresql://servidor-prod:5432/mi_app_prod
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=false

Esta separación permite mantener configuraciones específicas para cada entorno sin modificar el código fuente de la aplicación.

Aprende SpringBoot online

Otras lecciones de SpringBoot

Accede a todas las lecciones de SpringBoot y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Spring Boot

Spring Boot

Introducción Y Entorno

Spring Boot Starters

Spring Boot

Introducción Y Entorno

Inyección De Dependencias

Spring Boot

Introducción Y Entorno

Crear Proyecto Con Spring Initializr

Spring Boot

Introducción Y Entorno

Crear Proyecto Desde Visual Studio Code

Spring Boot

Introducción Y Entorno

Controladores Spring Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Vista En Spring Mvc Con Thymeleaf

Spring Boot

Spring Mvc Con Thymeleaf

Controladores Spring Rest

Spring Boot

Spring Mvc Con Thymeleaf

Open Api Y Cómo Agregarlo En Spring Boot

Spring Boot

Spring Mvc Con Thymeleaf

Servicios En Spring

Spring Boot

Spring Mvc Con Thymeleaf

Clientes Resttemplate Y Restclient

Spring Boot

Spring Mvc Con Thymeleaf

Rxjava En Spring Web

Spring Boot

Spring Mvc Con Thymeleaf

Métodos Post En Controladores Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Métodos Get En Controladores Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Formularios En Spring Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Crear Proyecto Con Intellij Idea

Spring Boot

Spring Mvc Con Thymeleaf

Introducción A Los Modelos Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Layouts Y Fragmentos En Thymeleaf

Spring Boot

Spring Mvc Con Thymeleaf

Estilización Con Bootstrap Css

Spring Boot

Spring Mvc Con Thymeleaf

Gestión De Errores Controlleradvice

Spring Boot

Spring Mvc Con Thymeleaf

Estilización Con Tailwind Css

Spring Boot

Spring Mvc Con Thymeleaf

Introducción A Controladores Rest

Spring Boot

Spring Rest

Métodos Get En Controladores Rest

Spring Boot

Spring Rest

Métodos Post En Controladores Rest

Spring Boot

Spring Rest

Métodos Delete En Controladores Rest

Spring Boot

Spring Rest

Métodos Put Y Patch En Controladores Rest

Spring Boot

Spring Rest

Gestión De Errores Restcontrolleradvice

Spring Boot

Spring Rest

Creación De Entidades Jpa

Spring Boot

Spring Data Jpa

Asociaciones De Entidades Jpa

Spring Boot

Spring Data Jpa

Repositorios Spring Data

Spring Boot

Spring Data Jpa

Métodos Find En Repositorios

Spring Boot

Spring Data Jpa

Inserción De Datos

Spring Boot

Spring Data Jpa

Actualizar Datos De Base De Datos

Spring Boot

Spring Data Jpa

Borrar Datos De Base De Datos

Spring Boot

Spring Data Jpa

Consultas Jpql Con @Query En Spring Data Jpa

Spring Boot

Spring Data Jpa

Api Query By Example (Qbe)

Spring Boot

Spring Data Jpa

Api Specification

Spring Boot

Spring Data Jpa

Repositorios Reactivos

Spring Boot

Spring Data Jpa

Configuración Base De Datos Postgresql

Spring Boot

Spring Data Jpa

Configuración Base De Datos Mysql

Spring Boot

Spring Data Jpa

Introducción A Jpa Y Spring Data Jpa

Spring Boot

Spring Data Jpa

Configuración Base De Datos H2

Spring Boot

Spring Data Jpa

Testing Unitario De Componentes Y Servicios

Spring Boot

Testing Con Spring Test

Testing De Repositorios Spring Data Jpa

Spring Boot

Testing Con Spring Test

Testing Controladores Spring Mvc Con Thymeleaf

Spring Boot

Testing Con Spring Test

Testing Controladores Rest Con Json

Spring Boot

Testing Con Spring Test

Testing De Aplicaciones Reactivas Webflux

Spring Boot

Testing Con Spring Test

Testing De Seguridad Spring Security

Spring Boot

Testing Con Spring Test

Testing Con Apache Kafka

Spring Boot

Testing Con Spring Test

Introducción Al Testing

Spring Boot

Testing Con Spring Test

Introducción A Spring Security

Spring Boot

Seguridad Con Spring Security

Seguridad Basada En Formulario

Spring Boot

Seguridad Con Spring Security

Registro De Usuarios En Api Rest

Spring Boot

Seguridad Con Spring Security

Login De Usuarios En Api Rest

Spring Boot

Seguridad Con Spring Security

Validación Jwt En Api Rest

Spring Boot

Seguridad Con Spring Security

Autenticación Jwt Completa En Api Rest

Spring Boot

Seguridad Con Spring Security

Seguridad Jwt En Api Rest Reactiva Spring Webflux

Spring Boot

Seguridad Con Spring Security

Autenticación Y Autorización Con Anotaciones

Spring Boot

Seguridad Con Spring Security

Fundamentos De Autenticación Oauth

Spring Boot

Seguridad Con Spring Security

Autenticación Oauth Con Github

Spring Boot

Seguridad Con Spring Security

Testing Con Spring Security Test

Spring Boot

Seguridad Con Spring Security

Autenticación Oauth En Api Rest

Spring Boot

Seguridad Con Spring Security

Introducción A Spring Webflux

Spring Boot

Reactividad Webflux

Spring Data R2dbc

Spring Boot

Reactividad Webflux

Controlador Reactivo Basado En Anotaciones

Spring Boot

Reactividad Webflux

Controlador Reactivo Basado En Funciones

Spring Boot

Reactividad Webflux

Operadores Reactivos Básicos

Spring Boot

Reactividad Webflux

Operadores Reactivos Avanzados

Spring Boot

Reactividad Webflux

Cliente Reactivo Webclient

Spring Boot

Reactividad Webflux

Introducción E Instalación De Apache Kafka

Spring Boot

Mensajería Asíncrona

Crear Proyecto Con Apache Kafka

Spring Boot

Mensajería Asíncrona

Creación De Producers

Spring Boot

Mensajería Asíncrona

Creación De Consumers

Spring Boot

Mensajería Asíncrona

Kafka Streams En Spring Boot

Spring Boot

Mensajería Asíncrona

Integración Con Angular

Spring Boot

Integración Frontend

Integración Con React

Spring Boot

Integración Frontend

Integración Con Vue

Spring Boot

Integración Frontend

Accede GRATIS a SpringBoot y certifícate

Ejercicios de programación de SpringBoot

Evalúa tus conocimientos de esta lección Configuración base de datos PostgreSQL con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender las dependencias necesarias para integrar PostgreSQL con Spring Boot.
  • Configurar los parámetros de conexión en el archivo application.properties.
  • Entender el control del esquema de base de datos mediante Hibernate y su parámetro ddl-auto.
  • Configurar el logging de consultas SQL para facilitar la depuración.
  • Gestionar el pool de conexiones y utilizar perfiles para diferentes entornos de configuración.