package org.ovirt.engine.core.dao;
import java.io.Serializable;
import java.util.Collection;
import org.ovirt.engine.core.common.businessentities.BusinessEntity;
/**
* Data Access Object which supports mass operations for the given entity type.
*
* @param T
* the type of entity to perform mass operations on.
*
* @param <ID>
* The type of the entity's id.
*/
public interface MassOperationsDao<T extends BusinessEntity<?>, ID extends Serializable> {
/**
* Updates the given entities using a more efficient method to update all of them at once, rather than each at a
* time. The procedure name to be used is "UpdateEntityName> where EntityName stands for the name of the entity
*
* @param entities
* The entities to update.
*/
void updateAll(Collection<T> entities);
/**
* Updates the given entities using a more efficient method to update all of them at once, rather than each at a
* time.
*
* @param procedureName
* procedure name for update
*/
void updateAll(String procedureName, Collection<T> entities);
/**
* Removes the entities with given ids
*/
void removeAll(Collection<ID> ids);
/**
* Calls a remove stored procedure multiple times in a batch
*/
void removeAllInBatch(Collection<T> entities);
/**
* Calls an update stored procedure multiple times in a batch
*/
void updateAllInBatch(Collection<T> entities);
/**
* Calls an insert stored procedure multiple times
*/
void saveAll(Collection<T> entities);
/**
* Saves the given entities using a more efficient method to save all of them at once, rather than each at a time.
* The procedure name to be used is "InsertEntityName" where EntityName stands for the name of the entity
*
* @param entities
* The entities to insert
*/
void saveAllInBatch(Collection<T> entities);
}