Application Spring Boot (Java 21) connectée à une base PostgreSQL Neon avec gestion de schéma par Flyway et scripts SQL versionnés.
- Connexion à Neon activée (SSL requis) via la datasource Spring.
- Dépendances Maven mises à jour:
- Ajout du pilote JDBC PostgreSQL:
org.postgresql:postgresql(scope runtime). - Ajout de Flyway:
org.flywaydb:flyway-core. - Ajout du support PostgreSQL 17+:
org.flywaydb:flyway-database-postgresql:11.7.2.
- Ajout du pilote JDBC PostgreSQL:
- Configuration Spring actualisée (
application.properties):- URL JDBC remplacée par l’URL Neon (avec
sslmode=requireetchannelBinding=require). - Identifiants
username/passwordmis à jour pour Neon. - Pool Hikari ajusté:
spring.datasource.hikari.maximum-pool-size=5. - JPA configuré pour laisser Flyway piloter le schéma:
spring.jpa.hibernate.ddl-auto=none. - Suppression des anciennes propriétés
javax.persistence.schema-generation.*devenues obsolètes.
- URL JDBC remplacée par l’URL Neon (avec
- Migrations Flyway:
- Correction du chemin: création de
src/main/resources/db/migration(au lieu desrc/main/migrations). - Ajout de
V1__init.sql(création de la tableutilisateur). - Application de la migration V1 au démarrage (journal Flyway validé).
- Correction du chemin: création de
- Exécution et dépannage:
- Attribution des permissions d’exécution à
mvnw(macOS):chmod +x mvnw. - Libération du port
8080lorsqu’il était occupé, puis redémarrage. - Démarrage confirmé: Tomcat sur
http://localhost:8080.
- Attribution des permissions d’exécution à
- Java 21
- Maven Wrapper (fourni:
./mvnw)
Utilisez des variables d’environnement pour éviter de committer des secrets:
export JDBC_URL="jdbc:postgresql://<host>/<database>?sslmode=require&channelBinding=require"
export DB_USER="<utilisateur>"
export DB_PASSWORD="<mot_de_passe>"Dans src/main/resources/application.properties:
spring.application.name=Adaction
spring.datasource.url=${JDBC_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.hikari.maximum-pool-size=5
# Laisser Flyway piloter le schéma
spring.jpa.hibernate.ddl-auto=noneNotes:
- Neon nécessite
sslmode=requireet souventchannelBinding=require. - Hibernate détecte automatiquement PostgreSQL, il est inutile de fixer
hibernate.dialect.
- Emplacement:
src/main/resources/db/migration - Nommage:
V{num}__{description}.sql(ex:V2__ajout_table_projet.sql)
Exemple existant (V1__init.sql):
CREATE TABLE IF NOT EXISTS utilisateur (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
nom VARCHAR(100) NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);Ajouter une nouvelle migration (ex: table projet):
CREATE TABLE IF NOT EXISTS projet (
id SERIAL PRIMARY KEY,
nom VARCHAR(150) NOT NULL,
description TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);Au démarrage, Flyway validera et appliquera les migrations sur la base Neon.
Compilation et lancement:
./mvnw spring-boot:runPremière exécution (si mvnw non exécutable):
chmod +x mvnw
./mvnw spring-boot:runLibérer le port 8080 en cas de conflit:
lsof -i :8080 -sTCP:LISTEN
kill <PID>-
Avertissement:
spring.jpa.open-in-view is enabled by default- Optionnel: désactiver via
spring.jpa.open-in-view=falsesi non nécessaire.
- Optionnel: désactiver via
-
Aucun script détecté par Flyway
- Vérifier le chemin exact
src/main/resources/db/migrationet le nommageV...__....sql.
- Vérifier le chemin exact
-
Erreurs SSL côté Neon
- Vérifier
sslmode=requireetchannelBinding=requiredans l’URL JDBC.
- Vérifier
Application disponible sur: http://localhost:8080