DatabaseDialect.ktorg.hibernate.dialect.PostgreSQLDialect) y HSQLDB (org.hibernate.dialect.HSQLDialect). Actúa como la única fuente de verdad para la configuración del tipo de base de datos en el arranque de la aplicación, la resolución de scripts de migración de Flyway y la configuración de la fábrica de sesiones de Hibernate.asString: String a través del constructor primario@JvmStatic@JvmStatic en fromString() permite llamarlo como DatabaseDialect.fromString(...) desde código Java, en lugar de DatabaseDialect.Companion.fromString(...)| Constante | Clase de Dialecto Hibernate | Proveedor Flyway | Contexto de Uso |
|---|---|---|---|
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect | postgresql | Despliegues en producción — la base de datos recomendada para producción |
HSQL | org.hibernate.dialect.HSQLDialect | hsqldb | Desarrollo/pruebas, configuración embebida — utilizado por el asistente de configuración para instalaciones de un solo usuario/locales |
Busca un dialecto por su nombre de clase de Hibernate. Devuelve null si no se encuentra ninguna coincidencia — los llamadores deben manejar el caso nulo (generalmente predeterminando a HSQL para desarrollo). El método utiliza una cadena simple if-else en lugar de un mapa de búsqueda, apropiado para el pequeño número de dialectos compatibles.
Asigna un nombre de producto del controlador JDBC al nombre del directorio del proveedor de Flyway. Esto es crítico para el descubrimiento de scripts de migración de base de datos de Flyway. Flyway organiza los scripts de migración en directorios específicos del proveedor:
flyway/{module}/migrate/postgresql/V1.1.0__RELEASE-RemoveMGC.sql
flyway/{module}/migrate/hsqldb/V1.1.0__RELEASE-RemoveMGC.sql
El método verifica si el nombre del producto contiene "hsql" (sin distinción de mayúsculas/minúsculas) y devuelve "hsqldb" o "postgresql" según corresponda. Esto permite que la misma lógica de migración funcione en todos los tipos de base de datos — las diferencias SQL específicas del proveedor (por ejemplo, sintaxis de tipos de columna, manejo de secuencias) se aíslan en los scripts de migración específicos del proveedor.
El archivo contiene un comentario que enumera el soporte de base de datos considerado o planificado anteriormente:
// Aún no compatible: // MYSQL, ORACLE, MS_SQL_SERVER, DB2, INFORMIX, DERBY, UNKOWN;
Esto revela la intención de diseño de admitir múltiples bases de datos — un requisito común para el software empresarial. La implementación actual solo admite PostgreSQL (para producción) y HSQLDB (para embebido/desarrollo), con la arquitectura lista para extensión.
El enum DatabaseDialect es parte de una abstracción de base de datos en capas:
asString proporciona la clase de dialecto de Hibernate para hibernate.cfg.xml o la configuración automática de Spring BootgetFlywayVendorName() dirige a los scripts de migración SQL específicos del proveedorEste archivo es uno de los primeros archivos Kotlin en el módulo projectforge-common (junto con otras clases de utilidad). Usar Kotlin para este enum proporciona:
DatabaseDialect? de fromString() obliga a los llamadores a manejar el caso nulogetFlywayVendorName() utiliza una simple coincidencia de subcadena (contains("hsql")) en lugar de una comparación exacta. Esto podría producir falsos positivos si un nombre de producto de base de datos contiene casualmente "hsql" como subcadena. Un enfoque más robusto sería comparar con una lista exacta de nombres de producto conocidos.init/common (creación de esquema) y migrate/{vendor} (migraciones específicas de versión). Esta separación permite que el esquema base sea independiente de la base de datos, mientras que las migraciones específicas del proveedor manejan diferencias en la sintaxis SQL o características (como PostgreSQL vs HSQLDB para el manejo de secuencias o la migración "RemoveMGC" visible en los directorios flyway del proyecto).868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024-> 2025. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 637063dd7 Nada (encabezado de archivo fuente corregido) 440d191a2 Página de configuración: activación de plugins estándar. AbstractPlugin: Corrección del nombre del proveedor para flyway.