package fr.chantier.dao;
import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import java.io.Serializable;
import java.util.List;
import java.util.Collection;
/**
* Dao generique pour l'acces aux entites de la base de donnees
* User: sora
* Date: 2 oct. 2008
* Time: 20:55:01
*/
public interface GenericDAO<T, ID extends Serializable> {
/**
* Recupere l'entite selon l'identifiant donne
*
* @param id identifiant de l'entite
* @param lock Bloque la modification de l'objet recupere
* @return Entite correspondante
*/
T findById(ID id, boolean lock);
/**
* Recupere toute les entites de la base de donnees
*
* @return Liste d'entites de la base
*/
Collection<T> findAll();
/**
* Rend l'entite donne persistante. L'entite est inscrite dans la base si elle n'existe pas. Elle est mise a jour si elle a ete modifie
*
* @param entity Entite a rendre persistente
* @return Entite persistante
*/
@CommitAfter
T makePersistent(T entity);
/**
* Decouple l'entite de la base de donne. La supprime de la base de donnee.
*
* @param entity Entite a supprimer.
*/
@CommitAfter
void makeTransient(T entity);
}