class DbSetup {

    public void launch() {
        try {
            Connection connection = destination.getConnection();
            try {
                connection.setAutoCommit(false);
                operation.execute(connection, binderConfiguration);
                connection.commit();
            }
            catch (SQLException e) {
                connection.rollback();
                throw e;
            }
            catch (RuntimeException e) {
                connection.rollback();
                throw e;
            }
            finally {
                connection.close();
            }
        }
        catch (SQLException e) {
            throw new DbSetupRuntimeException(e);
        }
    }

    public  DbSetup(@Nonnull Destination destination, @Nonnull Operation operation);
    public  DbSetup(@Nonnull Destination destination,
                   @Nonnull Operation operation,
                   @Nonnull BinderConfiguration binderConfiguration);

}