
org.uqbar.commons.model.Repo Maven / Gradle / Ivy
The newest version!
package org.uqbar.commons.model;
import java.util.List;
/**
* Un repo representa la interfaz hacia el lugar físico donde se persisten los objetos.
* Se asocia a un tipo de objeto dado (a una clase), y permite realizar operaciones
* sobre ese tipo de objetos.
*
* Estas operaciones relacionadas con la persistencia de los objetos.
* Por ejemplo: buscar bajo cierto criterio, eliminar un objeto, agregar uno nuevo, etc.
*
* Permite desacoplar al dominio de la lógica propia de la tecnología de la persistencia y de la manera en que
* se persiste: archivo, base de datos relacional, xml, etc.
*
* Antiguamente se le daba el término "Home" que proviene de la idea de
* que es el "hogar" de cierto tipo de objetos, y que
* aquí es donde "viven". Actualmente se asocia la idea de un repositorio,
* o lugar de almacenamiento de dichos objetos.
*
* Si quiero buscar una instancia voy a poder hacerlo a través de su Repo correspondiente.
*
*
*
* Repo is an interface that communicates to objects persistence model (named T).
* You can perform several CRUD operations to this T objects: search (by id or passing an example or prototypical object).
* create, update or delete messages are some of them..
*
* @see CollectionBasedRepo
*
* @author npasserini
*/
public interface Repo {
// ********************************************************
// ** Administrative information - Info para el compilador
// ********************************************************
public Class getEntityType();
// ********************************************************
// ** Search - Búsqueda
// ********************************************************
public T searchById(int id);
public List searchByExample(T example);
public T createExample();
public List allInstances();
// **************************************************************************
// ** CRUD Operations - Operaciones de Alta, Baja, Modificación y Consulta
// **************************************************************************
public void create(T object);
public void update(T object);
public void delete(T object);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy