DatabaseDialect.ktorg.hibernate.dialect.PostgreSQLDialect) et HSQLDB (org.hibernate.dialect.HSQLDialect). Sert de source unique de vérité pour la configuration du type de base de données dans le bootstrap de l'application, la résolution des scripts de migration Flyway et la configuration de la session factory Hibernate.asString: String via le constructeur principal@JvmStatic@JvmStatic sur fromString() la rend appelable en tant que DatabaseDialect.fromString(...) depuis le code Java, plutôt que DatabaseDialect.Companion.fromString(...)| Constante | Classe de dialecte Hibernate | Fournisseur Flyway | Contexte d'utilisation |
|---|---|---|---|
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect | postgresql | Déploiements de production — la base de données de production recommandée |
HSQL | org.hibernate.dialect.HSQLDialect | hsqldb | Développement/test, configuration embarquée — utilisée par l'assistant d'installation pour les installations mono-utilisateur/locales |
Recherche un dialecte par son nom de classe Hibernate. Retourne null si aucune correspondance n'est trouvée — les appelants doivent gérer le cas null (généralement en utilisant HSQL par défaut pour le développement). La méthode utilise une simple chaîne if-else plutôt qu'une table de correspondance, ce qui est approprié pour le petit nombre de dialectes pris en charge.
Mappe un nom de produit de pilote JDBC au nom de répertoire du fournisseur Flyway. Ceci est essentiel pour la découverte des scripts de migration de base de données Flyway. Flyway organise les scripts de migration dans des répertoires spécifiques au fournisseur :
flyway/{module}/migrate/postgresql/V1.1.0__RELEASE-RemoveMGC.sql
flyway/{module}/migrate/hsqldb/V1.1.0__RELEASE-RemoveMGC.sql
La méthode vérifie si le nom du produit contient "hsql" (insensible à la casse) et retourne "hsqldb" ou "postgresql" en conséquence. Cela permet à la même logique de migration de fonctionner sur différents types de bases de données — les différences SQL spécifiques au fournisseur (par exemple, la syntaxe des types de colonnes, la gestion des séquences) sont isolées dans les scripts de migration spécifiques au fournisseur.
Le fichier contient un commentaire listant les bases de données précédemment envisagées ou planifiées :
// Pas encore pris en charge : // MYSQL, ORACLE, MS_SQL_SERVER, DB2, INFORMIX, DERBY, UNKOWN;
Cela révèle l'intention de conception de prendre en charge plusieurs bases de données — une exigence courante pour les logiciels d'entreprise. L'implémentation actuelle ne prend en charge que PostgreSQL (pour la production) et HSQLDB (pour l'embarqué/développement), avec une architecture prête à être étendue.
L'enum DatabaseDialect fait partie d'une abstraction de base de données en couches :
asString fournit la classe de dialecte Hibernate pour hibernate.cfg.xml ou l'auto-configuration Spring BootgetFlywayVendorName() achemine vers les scripts de migration SQL spécifiques au fournisseurCe fichier est l'un des premiers fichiers Kotlin du module projectforge-common (avec d'autres classes utilitaires). L'utilisation de Kotlin pour cette enum offre :
DatabaseDialect? de fromString() oblige les appelants à gérer le cas nullgetFlywayVendorName() utilise une simple correspondance de sous-chaîne (contains("hsql")) plutôt qu'une comparaison exacte. Cela pourrait produire des faux positifs si un nom de produit de base de données contient par hasard "hsql" comme sous-chaîne. Une approche plus robuste consisterait à effectuer une correspondance avec une liste exacte de noms de produits connus.init/common (création du schéma) et migrate/{vendor} (migrations spécifiques à une version). Cette séparation permet au schéma de base d'être indépendant de la base de données tandis que les migrations spécifiques au fournisseur gèrent les différences de syntaxe SQL ou de fonctionnalités (comme PostgreSQL vs HSQLDB pour la gestion des séquences ou la migration "RemoveMGC" visible dans les répertoires flyway du projet).868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 637063dd7 Rien (en-tête de fichier source corrigé) 440d191a2 Page d'installation : activation des plugins standards. AbstractPlugin : Correction du nom du fournisseur pour flyway.