public void contribute()

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);
  }