in google-cloud-spanner-hibernate-dialect/src/main/java/com/google/cloud/spanner/hibernate/SpannerServiceContributor.java [49:74]
public void contribute(@Nonnull StandardServiceRegistryBuilder serviceRegistryBuilder) {
serviceRegistryBuilder
// The custom Hibernate schema management tool for Spanner.
.addInitiator(
new SchemaManagementToolInitiator() {
@Override
public SchemaManagementTool initiateService(
Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
JdbcEnvironment jdbcEnvironment = registry.getService(JdbcEnvironment.class);
if (jdbcEnvironment != null) {
if (SpannerDialect.class.isAssignableFrom(
jdbcEnvironment.getDialect().getClass())) {
return SCHEMA_MANAGEMENT_TOOL;
}
}
return super.initiateService(configurationValues, registry);
}
})
// The user agent JDBC connection property to identify the library.
.applySetting("hibernate.connection.userAgent", HIBERNATE_API_CLIENT_LIB_TOKEN)
// Adding this setting prevents Hibernate from dropping and re-creating (unique) indexes
// every time a session factory is created with hbm2dll=update.
.applySetting(
"hibernate.schema_update.unique_constraint_strategy",
UniqueConstraintSchemaUpdateStrategy.RECREATE_QUIETLY);
}