code: public BatchResult addBatch(DBObjectBatch dbObjBatch) {
          Utils.require(dbObjBatch.getObjectCount() > 0, "Batch cannot be empty");
          BatchResult batchResult = new BatchResult();
          try {
              if (addOrUpdateBatch(dbObjBatch, batchResult)) {
                  m_logger.debug("addBatch(): processed batch of {} objects", dbObjBatch.getObjectCount());
              } else {
                  batchResult.setComment("No updates made");
                  m_logger.debug("addBatch(): no updates made for {} objects", dbObjBatch.getObjectCount());
              }
          } catch (Throwable ex) {
              buildErrorStatus(batchResult, ex);
          }
          return batchResult;
      }
docs: Add the given batch of objects to the database. All objects must belong to the same
  table as given by {@link DBObjectBatch#getTableDef()}. Due to idempotent update
  semantics, some or all objects with assigned object IDs may already exist. Such
  objects are processed as a updates.
  
  @param dbObjBatch    Batch of objects to add.
  @return              A {@link BatchResult} representing the results of the update.
  An {@link ObjectResult} is added to the BatchResult for each
  object to reflect it's outcome.