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ícateConfiguració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 iniciocreate-drop
: Crea las tablas al inicio y las elimina al cerrar la aplicaciónupdate
: Actualiza el esquema existente sin eliminar datosvalidate
: Valida que el esquema coincida con las entidadesnone
: 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.
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
Introducción Y Entorno
Spring Boot Starters
Introducción Y Entorno
Inyección De Dependencias
Introducción Y Entorno
Crear Proyecto Con Spring Initializr
Introducción Y Entorno
Crear Proyecto Desde Visual Studio Code
Introducción Y Entorno
Controladores Spring Mvc
Spring Mvc Con Thymeleaf
Vista En Spring Mvc Con Thymeleaf
Spring Mvc Con Thymeleaf
Controladores Spring Rest
Spring Mvc Con Thymeleaf
Open Api Y Cómo Agregarlo En Spring Boot
Spring Mvc Con Thymeleaf
Servicios En Spring
Spring Mvc Con Thymeleaf
Clientes Resttemplate Y Restclient
Spring Mvc Con Thymeleaf
Rxjava En Spring Web
Spring Mvc Con Thymeleaf
Métodos Post En Controladores Mvc
Spring Mvc Con Thymeleaf
Métodos Get En Controladores Mvc
Spring Mvc Con Thymeleaf
Formularios En Spring Mvc
Spring Mvc Con Thymeleaf
Crear Proyecto Con Intellij Idea
Spring Mvc Con Thymeleaf
Introducción A Los Modelos Mvc
Spring Mvc Con Thymeleaf
Layouts Y Fragmentos En Thymeleaf
Spring Mvc Con Thymeleaf
Estilización Con Bootstrap Css
Spring Mvc Con Thymeleaf
Gestión De Errores Controlleradvice
Spring Mvc Con Thymeleaf
Estilización Con Tailwind Css
Spring Mvc Con Thymeleaf
Introducción A Controladores Rest
Spring Rest
Métodos Get En Controladores Rest
Spring Rest
Métodos Post En Controladores Rest
Spring Rest
Métodos Delete En Controladores Rest
Spring Rest
Métodos Put Y Patch En Controladores Rest
Spring Rest
Gestión De Errores Restcontrolleradvice
Spring Rest
Creación De Entidades Jpa
Spring Data Jpa
Asociaciones De Entidades Jpa
Spring Data Jpa
Repositorios Spring Data
Spring Data Jpa
Métodos Find En Repositorios
Spring Data Jpa
Inserción De Datos
Spring Data Jpa
Actualizar Datos De Base De Datos
Spring Data Jpa
Borrar Datos De Base De Datos
Spring Data Jpa
Consultas Jpql Con @Query En Spring Data Jpa
Spring Data Jpa
Api Query By Example (Qbe)
Spring Data Jpa
Api Specification
Spring Data Jpa
Repositorios Reactivos
Spring Data Jpa
Configuración Base De Datos Postgresql
Spring Data Jpa
Configuración Base De Datos Mysql
Spring Data Jpa
Introducción A Jpa Y Spring Data Jpa
Spring Data Jpa
Configuración Base De Datos H2
Spring Data Jpa
Testing Unitario De Componentes Y Servicios
Testing Con Spring Test
Testing De Repositorios Spring Data Jpa
Testing Con Spring Test
Testing Controladores Spring Mvc Con Thymeleaf
Testing Con Spring Test
Testing Controladores Rest Con Json
Testing Con Spring Test
Testing De Aplicaciones Reactivas Webflux
Testing Con Spring Test
Testing De Seguridad Spring Security
Testing Con Spring Test
Testing Con Apache Kafka
Testing Con Spring Test
Introducción Al Testing
Testing Con Spring Test
Introducción A Spring Security
Seguridad Con Spring Security
Seguridad Basada En Formulario
Seguridad Con Spring Security
Registro De Usuarios En Api Rest
Seguridad Con Spring Security
Login De Usuarios En Api Rest
Seguridad Con Spring Security
Validación Jwt En Api Rest
Seguridad Con Spring Security
Autenticación Jwt Completa En Api Rest
Seguridad Con Spring Security
Seguridad Jwt En Api Rest Reactiva Spring Webflux
Seguridad Con Spring Security
Autenticación Y Autorización Con Anotaciones
Seguridad Con Spring Security
Fundamentos De Autenticación Oauth
Seguridad Con Spring Security
Autenticación Oauth Con Github
Seguridad Con Spring Security
Testing Con Spring Security Test
Seguridad Con Spring Security
Autenticación Oauth En Api Rest
Seguridad Con Spring Security
Introducción A Spring Webflux
Reactividad Webflux
Spring Data R2dbc
Reactividad Webflux
Controlador Reactivo Basado En Anotaciones
Reactividad Webflux
Controlador Reactivo Basado En Funciones
Reactividad Webflux
Operadores Reactivos Básicos
Reactividad Webflux
Operadores Reactivos Avanzados
Reactividad Webflux
Cliente Reactivo Webclient
Reactividad Webflux
Introducción E Instalación De Apache Kafka
Mensajería Asíncrona
Crear Proyecto Con Apache Kafka
Mensajería Asíncrona
Creación De Producers
Mensajería Asíncrona
Creación De Consumers
Mensajería Asíncrona
Kafka Streams En Spring Boot
Mensajería Asíncrona
Integración Con Angular
Integración Frontend
Integración Con React
Integración Frontend
Integración Con Vue
Integración Frontend
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.
Crear entidades JPA
Controladores Spring MVC
Asociaciones de entidades JPA
Creación de entidades
Reto servicio PedidoService
Reto controlador REST
Consultas JPQL
Reto test controlador REST
Anotaciones JPA
Relación ManyToOne con Tarea y Proyecto
CRUD Customers Spring MVC + Spring Data JPA
Backend API REST con Spring Boot
Filtrar categorías por nombre
Reto controlador MVC Categoría
Entidad y repositorio
Métodos derivados y consultas JPQL en repositorios
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.