public <T> void insertAll(List<T> list) {
		if (list.size() == 0) {
			return;
		}
		Savepoint savepoint = null;
		try {
			Class<?> clazz = list.get(0).getClass();
			TableDefinition<?> def = define(clazz).createIfRequired(this);
			savepoint = prepareSavepoint();
			for (T t : list) {
				PreparedStatement ps = def.createInsertStatement(this, t, false);
				int rc = ps.executeUpdate();
				if (rc == 0) {
					throw new IciqlException("Failed to insert {0}.  Affected rowcount == 0.", t);
				}
			}
			commit(savepoint);
		} catch (SQLException e) {
			rollback(savepoint);
			throw new IciqlException(e);
		} catch (IciqlException e) {
			rollback(savepoint);
			throw e;
		}
	}