9Oct/070
Diseño técnico de una aplicación: Repositorio de Datos (II)
Como continuación a la anterior entrega de esta saga veamos a continuación la implementación genérica (100% reutilizable para cualquier otro proyecto) de un repositorio de datos, en concreto, usando Spring 2.0 + Hibernate 3.2.
package es.cmaj.commons.repository; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * @author cmaj * */ public class HibernateRepositoryBaseImpl<t> extends HibernateDaoSupport implements IRepositoryBase<t> { private Class<t> clazz; /** * The class of the entity. Needed for Hibernate use. * @param clazz */ public HibernateRepositoryBaseImpl(Class<t> clazz) { this.clazz = clazz; } /* * (non-Javadoc) * * @see es.cmaj.commons.repository.IRepositoryBase#delete(java.lang.Object) */ public void delete(T entity) { getHibernateTemplate().delete(entity); } /* * (non-Javadoc) * * @see es.cmaj.commons.repository.IRepositoryBase#getMany() */ @SuppressWarnings("unchecked") public List<t> getMany() { return getHibernateTemplate().loadAll(clazz); } /* * (non-Javadoc) * * @see es.cmaj.commons.repository.IRepositoryBase#getOne(long) */ @SuppressWarnings("unchecked") public T getOne(int id) { return (T) getHibernateTemplate().get(clazz, id); } /* * (non-Javadoc) * * @see es.cmaj.commons.repository.IRepositoryBase#saveOrUpdate(java.lang.Object) */ public T saveOrUpdate(T entity) { getHibernateTemplate().saveOrUpdate(entity); return entity; } }
Una vez tenemos estos dos elementos la creacion de un repositorio especifico es tan sencillo como se muestra a continuación:
package es.cmaj.coa.repository; import es.cmaj.coa.domain.Modelo; import es.cmaj.commons.repository.IRepositoryBase; public interface ModeloRepository extends IRepositoryBase<modelo> { }
package es.cmaj.coa.repository.hibernate; import es.cmaj.coa.domain.Modelo; import es.cmaj.coa.repository.ModeloRepository; import es.cmaj.commons.repository.HibernateRepositoryBaseImpl; public class ModeloRepositoryImpl extends HibernateRepositoryBaseImpl<modelo> implements ModeloRepository { public ModeloRepositoryImpl() { super(Modelo.class); } }
Imprimir este artículo
Comentarios (0)
Trackbacks (0)
( suscribirse a los comentarios de esta entrada )
Aún no hay trackbacks.





