code: @Override
  	public <P extends ParaObject> void createAll(String appid, List<P> objects) {
  		if (objects == null || objects.isEmpty() || StringUtils.isBlank(appid)) {
  			return;
  		}
  
  		List<WriteRequest> reqs = new ArrayList<>(objects.size());
  		int batchSteps = 1;
  		if ((objects.size() > MAX_ITEMS_PER_WRITE)) {
  			batchSteps = (objects.size() / MAX_ITEMS_PER_WRITE) +
  					((objects.size() % MAX_ITEMS_PER_WRITE > 0) ? 1 : 0);
  		}
  
  		Iterator<P> it = objects.iterator();
  		String tableName = getTableNameForAppid(appid);
  		int j = 0;
  
  		for (int i = 0; i < batchSteps; i++) {
  			while (it.hasNext() && j < MAX_ITEMS_PER_WRITE) {
  				ParaObject object = it.next();
  				if (StringUtils.isBlank(object.getId())) {
  					object.setId(Utils.getNewId());
  				}
  				if (object.getTimestamp() == null) {
  					object.setTimestamp(Utils.timestamp());
  				}
  				//if (updateOp) object.setUpdated(Utils.timestamp());
  				object.setAppid(appid);
  				Map<String, AttributeValue> row = toRow(object, null);
  				setRowKey(getKeyForAppid(object.getId(), appid), row);
  				reqs.add(new WriteRequest().withPutRequest(new PutRequest().withItem(row)));
  				j++;
  			}
  			batchWrite(Collections.singletonMap(tableName, reqs), 1);
  			reqs.clear();
  			j = 0;
  		}
  		logger.debug("DAO.createAll() {}->{}", appid, (objects == null) ? 0 : objects.size());
  	}
docs: ///////////////////////////////////////////