code: @Override
      public BatchResult addBatch(String tableName, DBObjectBatch dbObjBatch) {
          Utils.require(!Utils.isEmpty(tableName), "tableName");
          Utils.require(dbObjBatch != null && dbObjBatch.getObjectCount() > 0,
                        "Object batch must have at least 1 object");
          
          try {
              // Send a POST request to "/{application}/{table}"
              byte[] body = Utils.toBytes(dbObjBatch.toDoc().toJSON());
              StringBuilder uri = new StringBuilder(Utils.isEmpty(m_restClient.getApiPrefix()) ? "" : "/" + m_restClient.getApiPrefix());
              uri.append("/");
              uri.append(Utils.urlEncode(m_appDef.getAppName()));
              uri.append("/");
              uri.append(Utils.urlEncode(tableName));
              RESTResponse response = 
                  m_restClient.sendRequest(HttpMethod.POST, uri.toString(), ContentType.APPLICATION_JSON, body);
              m_logger.debug("addBatch() response: {}", response.toString());
              return createBatchResult(response, dbObjBatch);
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
docs: Add the given batch of objects to the given table, which must belong to this
  session's application. Objects are added if they do not currently exist or do not
  have an object ID assigned. Otherwise, existing objects are updated. The result of
  the update is returned as a {@link BatchResult}.
  
  @param tableName     Name of table to update.
  @param dbObjBatch    {@link DBObjectBatch} of objects to add or update.
  @return              A {@link BatchResult} object containing the results of the
  update request.