code: public void initialize() throws SQLException {
  		if (initialized) {
  			return;
  		}
  		if (dataSource == null) {
  			throw new IllegalStateException("dataSource was never set on " + getClass().getSimpleName());
  		}
  		if (databaseType == null) {
  			if (databaseUrl == null) {
  				throw new IllegalStateException(
  						"either the databaseUri or the databaseType must be set on " + getClass().getSimpleName());
  			}
  			databaseType = DatabaseTypeUtils.createDatabaseType(databaseUrl);
  		}
  		databaseType.loadDriver();
  		if (databaseUrl != null) {
  			databaseType.setDriver(DriverManager.getDriver(databaseUrl));
  		}
  
  		// see if we have a single connection data-source
  		DatabaseConnection jdbcConn1 = null;
  		DatabaseConnection jdbcConn2 = null;
  		try {
  			Connection conn1 = dataSource.getConnection();
  			Connection conn2 = dataSource.getConnection();
  			// sanity check for testing
  			if (conn1 == null || conn2 == null) {
  				isSingleConnection = true;
  			} else {
  				jdbcConn1 = new JdbcDatabaseConnection(conn1);
  				jdbcConn2 = new JdbcDatabaseConnection(conn2);
  				isSingleConnection = isSingleConnection(jdbcConn1, jdbcConn2);
  			}
  		} finally {
  			IOUtils.closeQuietly(jdbcConn1);
  			IOUtils.closeQuietly(jdbcConn2);
  		}
  
  		initialized = true;
  	}
docs: Initialize the class after the setters have been called. If you are using the no-arg constructor and Spring type
  wiring, this should be called after all of the set methods.
  
  @throws SQLException
  If the driver associated with the database URL is not found in the classpath.