All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.evasion.dao.api.GenericDAO Maven / Gradle / Ivy

There is a newer version: 2.0.0.2
Show newest version
/*
 * Document confidentiel - Diffusion interdite 
 */

package com.evasion.dao.api;

import java.io.Serializable;
import java.util.List;

/**
 * DAO generique.
 * 
 * @param 
 *            le type persistent
 * @param 
 *            le type de la clef primaire de l'objet persistent
 */
public interface GenericDAO extends DAO {

	/**
	 * Charge l'objet ayant pour identifiant l'id passe en parametre. Cette
	 * methode lance une exception si l'objet n'a pas ete trouve.
	 * 
	 * Note : Cette methode renvoie generalement un proxy et non l'objet charge
	 * depuis le repository (i.e. la base de donnees) Cela a plusieurs avantages
	 * en terme de performances :
	 * 
    *
  • L'entite n'est chargee de la base que lorsque l'on en a besoin
  • *
  • Le cache de second niveau est toujours utilise
  • *
* Mais a aussi un inconvenient : *
    *
  • Si l'entite n'existe pas dans le repository, une exception est lancee * mais uniquement lors de l'acces a l'entite (lors de son chargement depuis * le repository) et non lors de l'appel a load(). Les erreurs sont donc * plus difficile a tracer.
  • *
* Cette methode est donc a utiliser lorsque l'on est sur que l'objet existe * en base. * * @param id * identifiant de l'objet * @return l'objet correspondant a l'id passe en parametre */ T getReference(PK id); /** * Renvoie l'objet pour l'identifiant passe en parametre, ou * null si l'oblet n'a pas ete trouve. * * @param id * identifiant de l'objet * @return l'objet pour l'identifiant passe en parametre, ou * null si l'oblet n'a pas ete trouve. */ T findById(PK id); /** * Retourne tous les objets persistants correspondant à la classe de * l'entite. * * @return la liste des entites ou une liste vide si aucune entite n'est * trouvee. */ List findAll(); /** * Attache l'entite a la session (ou l'entityManager). L'entite passee en * parametre est manage par la Session (ou l'EntityManager). * * @param entity * l'entite a persister */ void persist(T entity); /** * Save ou update l'entite pass�e en parametre. * * Note: l'entite passee en parametre n'est pas attachee a la session en * cours (i.e. les modification sur l'objet ne seront pas persite en base). * L'objet retourne par la methode est attache a la session. * * @param entity * l'entite a sauvegarder * @return l'entite persistante (i.e. attache a la session) */ T merge(T entity); /** * Supprime l'entite. * * @param entity * l'entite a supprimer. */ void remove(T entity); /** * Synchronise la session (ou l'EntityManager) avec la base de donnee. * * Note : Cette methode n'est a utiliser que dans des cas specifiques * (batch, TU, ...). Il est generalement preferable de laisser le framework * gerer le flush lui-meme. */ void flush(); /** * Vide la session (ou l'EntityManager). Tous les changements qui n'ont pas * ete persistes sont perdus. Les entites sont toutes detachees de la * session (donc ne sont plus gerees automatiquement par la session). * */ void clear(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy