Saltar al contenido principal
Version: Next (5.0)

Esta página enumera los motores de bases de datos SQL soportados oficialmente por AWE Framework y muestra, de un vistazo, cómo configurar cada uno para JDBC y Flyway.

AWE utiliza Spring Boot + JDBC y Flyway. Para cada motor necesita:

  • Un driver JDBC en el classpath.
  • (Si usa Flyway) el módulo de base de datos de Flyway correspondiente en el classpath.
  • Una URL JDBC y credenciales.
  • Opcionalmente, scripts de migración específicos del proveedor en classpath:db/migration/{vendor}, donde {vendor} se resuelve a partir de la URL JDBC.

Consejo: AWE establece las ubicaciones de Flyway en classpath:db/migration/{vendor} para que pueda mantener un conjunto de migraciones por proveedor de base de datos. Los módulos indicados en awe.database.migration-modules se aplican al mismo datasource.

Comparación rápida

MotorClave de proveedorDriver JDBCMódulo de FlywayURL de ejemplo
🧪 HSQLDBhsqldborg.hsqldb:hsqldborg.flywaydb:flyway-database-hsqldbjdbc:hsqldb:mem:awetestdb
⚡ H2h2com.h2database:h2incluido en el núcleo de Flyway (sin módulo adicional en la mayoría de versiones)jdbc:h2:mem:awetestdb;MODE=MySQL
🐬 MySQL/MariaDBmysqlcom.mysql:mysql-connector-jorg.flywaydb:flyway-mysqljdbc:mysql://localhost/awetestdb
🐘 PostgreSQLpostgresqlorg.postgresql:postgresqlorg.flywaydb:flyway-database-postgresqljdbc:postgresql://localhost/awetestdb
🪟 SQL Serversqlservercom.microsoft.sqlserver:mssql-jdbcorg.flywaydb:flyway-sqlserverjdbc:sqlserver://localhost:1433;databaseName=awetestdb
🏛️ Oracleoraclecom.oracle.database.jdbc:ojdbc11org.flywaydb:flyway-database-oracle (Teams en algunas versiones)jdbc:oracle:thin:@//localhost:1521/XEPDB1

Fragmentos para copiar y pegar

Utilice las pestañas para elegir su base de datos y copiar los ejemplos mínimos de Maven y application.properties.

pom.xml — add JDBC + Flyway module
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-hsqldb</artifactId>
</dependency>
application.properties
spring.datasource.url=jdbc:hsqldb:mem:awetestdb
spring.datasource.driver-class-name=org.hsqldb.jdbcDriver
spring.flyway.enabled=true
# spring.flyway.locations=classpath:db/migration/{vendor}
awe.database.migration-modules=AWE,SCHEDULER,NOTIFIER

Pruebas con cada base de datos

Las pruebas de integración de AWE ejecutan cada base de datos de servidor en un contenedor de Testcontainers, por lo que el único requisito es tener Docker en ejecución. HSQLDB y H2 se ejecutan embebidas. Una clase de prueba de Spring elige su base de datos con una única anotación de awe-testing, y el módulo necesita el driver JDBC de esa base de datos:

@SpringBootTest
@AweDatabaseTest(TestDatabase.POSTGRESQL) // HSQLDB, H2, MYSQL, POSTGRESQL, SQLSERVER, ORACLE
class MyQueryIT { }

@AweDatabaseTest(value = TestDatabase.MYSQL, flyway = true) // Flyway instead of the schema and data scripts
class MyFlywayIT { }

El contenedor se inicia una sola vez por ejecución de pruebas, y la anotación escribe la conexión spring.datasource.* (y la configuración de scripts o de Flyway) correspondiente. Las imágenes están fijadas en un único fichero, awe-framework/awe-testing/src/main/resources/awe-testing-images.properties.

MotorImagenNotas
MySQLmysql
PostgreSQLpostgres
SQL Servermcr.microsoft.com/mssql/serverRequiere AWE_TESTING_SQLSERVER_ACCEPT_EULA=true (o -Dawe.testing.sqlserver.accept-eula=true) para aceptar la licencia de Microsoft. La imagen solo está disponible para amd64.
Oraclegvenzl/oracle-freeImagen grande (unos 6 GB): la primera ejecución dedica la mayor parte del tiempo a descargarla.

Para ejecutar las suites de una base de datos desde el repositorio de AWE, consulte "Database integration tests" en CONTRIBUTING.md.

Disposición de los scripts de Flyway

Coloque los scripts específicos de cada proveedor en:

classpath:db/migration/{vendor}

Los propios módulos de AWE siguen esa convención. Por ejemplo:

  • Núcleo de AWE: awe-starters/awe-spring-boot-starter/src/main/resources/db/migration/mysql y .../postgresql.
  • Scheduler: awe-starters/awe-scheduler-spring-boot-starter/src/main/resources/db/migration/{vendor}.
  • Notifier: awe-starters/awe-notifier-spring-boot-starter/src/main/resources/db/migration/{vendor}.

Los scripts de cada módulo se nombran con el prefijo del módulo y la versión, por ejemplo:

AWE_V1.0.0__Init_awe_schema.sql
SCHEDULER_V1.0.0__Init_scheduler.sql
NOTIFIER_V1.0.0__Init_notifier.sql

Configuración global mínima

Habilite Flyway e indique los módulos cuyas migraciones quiere aplicar:

spring.flyway.enabled=true
# Default location already uses {vendor}
# spring.flyway.locations=classpath:db/migration/{vendor}

# AWE will migrate all listed modules on the configured datasource
# (Using the customized FlywayMigrationConfig)
awe.database.migration-modules=AWE,SCHEDULER,NOTIFIER