lunes, 7 de octubre de 2013

Hibernate: Creación de la clase DAO

Vamos a profundizar un poco mas en la creación de clase DAO. Estas clases se crean con el objetivo de dotar a la aplicación de una capa que se encargue del acceso a la BD proporcionando así abstracción e independencia del resto de las capas de servicio de negocio de la aplicación.

La clase DAO (Data Acces Object) será la encargada de realizar las acciones que necesitemos sobre la Base de Datos (Insterts, updates, deletes...)

En el post anterior ya realizamos una clase DAO, ahora vamos a ver como aplicar los criterios de diversas formas a nuestra consulta.

En primer lugar hablaremos de Criteria. Criteria es una clase incluida en el paquete de hibernate que nos permitirá realizar nuestra consulta de una forma sencilla.

Instanciamos el objeto criteria pasando la clase donde se aplicaran las restricciones como atributo:

Criteria criteria = sesion.createCriteria(DWH_DIA.class);

Recordar que previamente hemos creado el objeto sesion mediante :

sesion = HibernateUtil.getSessionFactory().openSession();

Una vez hecho esto, podemos empezar a añadirle condiciones a nuestro objeto criteria, por ejemplo decirle que id queremos buscar en nuestra consulta :

criteria.add(Restrictions.eq("idTest", 120));

o incluso marcarle un order by:

criteria.addOrder(Order.asc("Fecha"));

Una vez aplicados todos los criterios necesarios a nuestra consulta, bastará con listarla:

listaDatos=criteria.list();

Otro metodo interesante es aplicar varios valores a un mismo campo como criterio de consulta, en este caso :

Disjunction disjunction = Restrictions.disjunction();
disjunction.add(Restrictions.eq("id", 120));
disjunction.add(Restrictions.eq("id", 121));


Finalmente se aplica el objecto disjunction a nuestro criterio de selección:

criteria.add(disjunction);


De esta manera se aplicarían los valores 120 y 121 al campo id de nuestra consulta como criterio de selección.


Otra opción para realizar la consulta seria aplicar una consulta SQL creada mediante el típico String en java, en este caso, una vez escrita la consulta, haremos :

Query query = sesion.createQuery(sql);

Y posteriormente iteraremos sobre los resultados que se produzcan para tratarlos de la forma que nos convenga, por ejemplo los recogeremos en un Objet[]

for(Iterator it=query.iterate();it.hasNext();){
Object[] row = (Object[]) it.next();
}


No hay comentarios:

Publicar un comentario