code: @Override
      public synchronized void rollback() throws DatabaseEngineRuntimeException {
          /*
           * Reconnect on this method does not make sense since a new connection will have nothing to rollback.
           */
          try {
              // While rolling back, the entities can still have batch data which needs to be cleared.
              for (final MappedEntity mappedEntity : entities.values()) {
                  mappedEntity.getInsert().clearBatch();
                  mappedEntity.getInsertReturning().clearBatch();
                  mappedEntity.getInsertWithAutoInc().clearBatch();
              }
              conn.rollback();
              conn.setAutoCommit(true);
          } catch (final SQLException ex) {
              throw new DatabaseEngineRuntimeException("Something went wrong while rolling back the transaction", ex);
          }
      }
docs: Rolls back a transaction. You should only call this method if you've previously called {@link AbstractDatabaseEngine#beginTransaction()}.
  
  @throws DatabaseEngineRuntimeException If the rollback fails.