package org.ovirt.engine.core.dao;
import java.io.Serializable;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.BusinessEntity;
/**
* Data Access Object interface used for reading entities from a source of data. Extending types should provide more
* entity-specific methods for retrieving the entity in more complex situations (i.e. by a field of the entity).
*
* @param <T>
* The type of the entity.
* @param <ID>
* The type of the entity's id.
*/
public interface ReadDao<T extends BusinessEntity<ID>, ID extends Serializable> extends Dao {
/**
* Retrieves the entity with the given id.
*
* @param id
* The id to look by (can't be {@code null}).
* @return The entity instance, or {@code null} if not found.
*/
public T get(ID id);
/**
* Retrieves all the entities of type {@link T}.
*
* @return A list of all the entities, or an empty list if none is found.
*/
public List<T> getAll();
}