code: @Override
    public void close() throws IOException {
      try {
        try {
          if (this.failed && this.conn != null) {
            this.conn.rollback();
          }
        } finally {
          if (this.conn != null) {
            this.conn.close();
          }
        }
      } catch (SQLException e) {
        throw new RuntimeException(e);
      }
    }
docs: If there's a failure, it will execute roll back.
  {@inheritDoc}
  @see java.io.Closeable#close()