package org.ovirt.engine.core.dao;
import java.io.Serializable;
import org.ovirt.engine.core.common.businessentities.BusinessEntity;
/**
* Data Access Object interface used for modifying entities persisted to a store of data. Extending types could provide
* more entity-specific methods for modifying the entity in more complex situations (i.e. batch operations).
*
* @param <T>
* The type of the entity.
* @param <ID>
* The type of the entity's id.
*/
public interface ModificationDao<T extends BusinessEntity<ID>, ID extends Serializable> extends DAO {
/**
* Persist a new instance of the entity.
*
* @param entity
* The entity to persist (can't be <code>null</code>).
*/
public void save(T entity);
/**
* Update an existing entity with data from the given instance.
*
* @param entity
* The entity instance, containing data to update (can't be <code>null</code>).
*/
public void update(T entity);
/**
* Removes the entity with the given id from the underlying store of data.
*
* @param id
* The id of the entity to remove (can't be <code>null</code>).
*/
public void remove(ID id);
}