code: public String getDriverClassName() {
          final String driverClassName = basicJdbcConfiguration.getConfiguredDriverClassName();
          if (calculatedDriverClassName == null || StringUtils.hasText(driverClassName)) {
              if (StringUtils.hasText(driverClassName)) {
                  if (!driverClassIsPresent(driverClassName)) {
                      throw new ConfigurationException(String.format("Error configuring data source '%s'. The driver class '%s' was not found on the classpath", basicJdbcConfiguration.getName(), driverClassName));
                  }
                  calculatedDriverClassName = driverClassName;
              } else {
                  final String url = basicJdbcConfiguration.getUrl();
                  if (StringUtils.hasText(url)) {
                      JdbcDatabaseManager.findDatabase(url).ifPresent(db ->
                          calculatedDriverClassName = db.getDriverClassName());
                  }
  
                  if (!StringUtils.hasText(calculatedDriverClassName) && embeddedDatabaseConnection.isPresent()) {
                      calculatedDriverClassName = this.embeddedDatabaseConnection.get().getDriverClassName();
                  }
  
                  if (!StringUtils.hasText(calculatedDriverClassName)) {
                      throw new ConfigurationException(String.format("Error configuring data source '%s'. No driver class name specified", basicJdbcConfiguration.getName()));
                  }
              }
          }
  
          return calculatedDriverClassName;
      }
docs: Determines the driver class name based on the configured value. If not
  configured, determine the driver class name based on the URL. If the
  URL is not configured, look for an embedded database driver on the
  classpath.
  
  @return The calculated driver class name