public final void transactionRollback() throws RemoteException
  {
    synchronized(transactions)
    {
      // Erkennt, ob das rollback nach einem Insert ausgefuehrt wurde.
      // Ist das der Fall, muss das Member mit der ID geloescht werden,
      // denn es existiert ja nicht in der DB.
      if (created)
      {
        this.id = null;
        this.created = false;
      }

      if (!this.inTransaction())
      {
        Logger.debug("[rollback] rollback without begin or transaction allready rolled back");
        return;
      }
      
      checkConnection();

      Transaction tr = getTransaction();
      if (tr == null)
      {
        Logger.debug("[rollback] rollback called, but no transaction found");
        return;
      }

      tr.count--;
      Logger.debug("[rollback] transaction count: " + tr.count);

      if (tr.count > 0)
        return;

      try {
        Logger.debug("[rollback] transaction rollback");
        getConnection().rollback();
      }
      catch (SQLException e)
      {
        throw new RemoteException("rollback failed",e);
      }
    }
  }