Skip to content

Commit

Permalink
Rely on DatasourceDbKindHibernateOrmMetadataBuildItem for core databa…
Browse files Browse the repository at this point in the history
…se kinds
  • Loading branch information
yrodiere committed May 30, 2022
1 parent 11b3ba4 commit 07b07df
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 30 deletions.
Expand Up @@ -14,42 +14,13 @@ private Dialects() {

public static String guessDialect(String persistenceUnitName, String resolvedDbKind,
List<DatasourceDbKindHibernateOrmMetadataBuildItem> dbKindMetadataBuildItems) {
// For now select the latest dialect from the driver
// later, we can keep doing that but also avoid DCE
// of all the dialects we want in so that people can override them
if (DatabaseKind.isDB2(resolvedDbKind)) {
return "org.hibernate.dialect.DB297Dialect";
}
if (DatabaseKind.isPostgreSQL(resolvedDbKind)) {
return "io.quarkus.hibernate.orm.runtime.dialect.QuarkusPostgreSQL10Dialect";
}
if (DatabaseKind.isH2(resolvedDbKind)) {
return "io.quarkus.hibernate.orm.runtime.dialect.QuarkusH2Dialect";
}
if (DatabaseKind.isMariaDB(resolvedDbKind)) {
return "org.hibernate.dialect.MariaDB106Dialect";
}
if (DatabaseKind.isMySQL(resolvedDbKind)) {
return "org.hibernate.dialect.MySQL8Dialect";
}
if (DatabaseKind.isOracle(resolvedDbKind)) {
return "org.hibernate.dialect.Oracle12cDialect";
}
if (DatabaseKind.isDerby(resolvedDbKind)) {
return "org.hibernate.dialect.DerbyTenSevenDialect";
}
if (DatabaseKind.isMsSQL(resolvedDbKind)) {
return "org.hibernate.dialect.SQLServer2016Dialect";
}

// This is created for third party extentions. I think hardcode above can be refactored by owners
for (DatasourceDbKindHibernateOrmMetadataBuildItem item : dbKindMetadataBuildItems) {
if (DatabaseKind.is(resolvedDbKind, item.getDbKind())) {
return item.getDialect();
}
}

String error = "Hibernate extension could not guess the dialect from the database kind '" + resolvedDbKind
String error = "The Hibernate ORM extension could not guess the dialect from the database kind '" + resolvedDbKind
+ "'. Add an explicit '" + HibernateOrmConfig.puPropertyKey(persistenceUnitName, "dialect") + "' property.";
throw new ConfigurationException(error);
}
Expand Down
Expand Up @@ -80,6 +80,7 @@
import io.quarkus.arc.deployment.staticmethods.InterceptedStaticMethodsTransformersRegisteredBuildItem;
import io.quarkus.arc.processor.DotNames;
import io.quarkus.datasource.common.runtime.DataSourceUtil;
import io.quarkus.datasource.common.runtime.DatabaseKind;
import io.quarkus.deployment.Capabilities;
import io.quarkus.deployment.Capability;
import io.quarkus.deployment.Feature;
Expand Down Expand Up @@ -169,6 +170,27 @@ public final class HibernateOrmProcessor {

private static final String INTEGRATOR_SERVICE_FILE = "META-INF/services/org.hibernate.integrator.spi.Integrator";

@BuildStep
void registerHibernateOrmMetadataForCoreDialects(
BuildProducer<DatasourceDbKindHibernateOrmMetadataBuildItem> producer) {
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.DB2,
"org.hibernate.dialect.DB297Dialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.DERBY,
"org.hibernate.dialect.DerbyTenSevenDialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.H2,
"io.quarkus.hibernate.orm.runtime.dialect.QuarkusH2Dialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.MARIADB,
"org.hibernate.dialect.MariaDB106Dialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.MSSQL,
"org.hibernate.dialect.SQLServer2016Dialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.MYSQL,
"org.hibernate.dialect.MySQL8Dialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.ORACLE,
"org.hibernate.dialect.Oracle12cDialect"));
producer.produce(new DatasourceDbKindHibernateOrmMetadataBuildItem(DatabaseKind.POSTGRESQL,
"io.quarkus.hibernate.orm.runtime.dialect.QuarkusPostgreSQL10Dialect"));
}

@BuildStep
void checkTransactionsSupport(Capabilities capabilities) {
// JTA is necessary for blocking Hibernate ORM but not necessarily for Hibernate Reactive
Expand Down

0 comments on commit 07b07df

Please sign in to comment.