code: private void performDeletion(final ClassDescriptor cld, final Object obj, final Identity oid, final boolean ignoreReferences) throws PersistenceBrokerException
      {
              // 1. delete dependend collections
              if (!ignoreReferences  && cld.getCollectionDescriptors().size() > 0)
              {
                  deleteCollections(obj, cld.getCollectionDescriptors());
              }
              // 2. delete object from directly mapped table
              try
              {
                  dbAccess.executeDelete(cld, obj); // use obj not oid to delete, BRJ
              }
              catch(OptimisticLockException e)
              {
                  // ensure that the outdated object be removed from cache
                  objectCache.remove(oid);
                  throw e;
              }
  
              // 3. Add OID to the set of deleted objects
              deletedDuringTransaction.add(oid);
  
              // 4. delete dependend upon objects last to avoid FK violations
              if (cld.getObjectReferenceDescriptors().size() > 0)
              {
                  deleteReferences(cld, obj, oid, ignoreReferences);
              }
              // remove obj from the object cache:
              objectCache.remove(oid);
      }
docs: This method perform the delete of the specified object
  based on the {@link org.apache.ojb.broker.metadata.ClassDescriptor}.