es.mcu.yingo.dao
Class DaoImp

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by org.springframework.orm.hibernate3.support.HibernateDaoSupport
          extended by es.mcu.yingo.dao.DaoImp
All Implemented Interfaces:
Dao, org.springframework.beans.factory.InitializingBean
Direct Known Subclasses:
DaoConsulta

public class DaoImp
extends org.springframework.orm.hibernate3.support.HibernateDaoSupport
implements Dao

Clase que implementa el interfaz Dao con soporte de Hibernate y transacciones a BBDD

Author:
miguel.esteban

Field Summary
protected  org.apache.commons.logging.Log logger
          Atributo para la gestión de los logs
protected  org.hibernate.Session miSession
          Objeto 'Session' privado de la clase
protected  org.hibernate.Transaction miTransaction
          Objeto 'Transaction' privado de la clase
 
Fields inherited from interface es.mcu.yingo.dao.Dao
ORDER_ASC, ORDER_DESC
 
Constructor Summary
DaoImp()
           
 
Method Summary
 void actualizaBean(java.lang.Object bean)
          Actualiza en BBDD los valores cargados en las propiedades del parámetro bean
 void beginTransaction()
          Abre una transacción.
 void borraBean(java.lang.Object bean)
          Borra el registro que representa el bean de la bbdd
 int borrarConsultaParametros(java.lang.String consulta, java.lang.Object[] parametros)
          Borra los registros que coincidan con la consulta con los parámetros que se pasan como argumentos.
protected  void cerrarSession(org.hibernate.Session sesion)
          Cierra la transacción.
 void commit()
          Método para realizar 'commit' en la transacción abierta.
 void creaBean(java.lang.Object bean)
          Inserta en la BBDD un registro con los datos que se han cargado en las propiedades del objeto bean en la tabla que representa la clase del objeto bean
protected  org.hibernate.Query crearQuery(java.lang.String consulta, java.lang.Object[] parametros, org.hibernate.Session session)
          Crea un objeto Query de Hibernate a partir de la sesión con la consulta cargandole los parámetros que se pasan por argumentos
 java.lang.Object ejecutaConsultaUnResultado(java.lang.String consulta, java.lang.Object[] parametros)
          Devuelve un sólo objeto representado un sólo registro al ejecutar la consulta con los parámetros que se pasan como argumentos.
 java.util.Collection ejecutarConsulta(java.lang.String consulta)
          Devuelve una colección de datos ejecutando la consulta.
 java.util.Collection ejecutarConsultaParametros(java.lang.String consulta, java.lang.Object[] parametros)
          Devuelve una colección de datos ejecutando contra la BBDDD la consulta con los parámetros que se pasan como argumentos.
 java.util.List ejecutarConsultaParametrosRango(java.lang.String consulta, java.lang.Object[] parametros, java.lang.Integer inicio, java.lang.Integer cuantos)
          Devuelve una colección de datos ejecutando contra la BBDDD la consulta con los parámetros que se pasan como argumentos.
protected  java.util.List encontrar(java.lang.String consulta, java.lang.Object[] parametros, java.lang.Integer inicio, java.lang.Integer cuantos)
          Implemetación de la función find de Hibernate teniendo en cuenta la sesión privada.
protected  java.util.List encontrarPorEjemplo(java.lang.Object bean)
          Implementación de findByExample de Hibernate teniendo en cuenta la sesión privada si se ha iniciado la transacción a base de datos.
 java.util.Collection getConsultaXML(java.lang.String consulta, java.lang.Object[] parametros)
          Devuelve una colección de objetos que representan un nodo xml, ejecutando contra la BBDDD la consulta con los parámetros que se pasan.
protected  void inicializarMiSession()
          Inicicaliza las variables privadas miSession y miTransaction
 boolean isAbiertaTransaccion()
          Indica si está abierta la transacción
 java.util.Collection obtenerBean(java.lang.Object bean)
          Obtiene una colección de objetos del tipo bean a partir de las propiedades cargadas en el parámetro bean
Internamente se realiza una llamada a encontrarPorEjemplo
 java.lang.Object obtenerBean(java.lang.Object bean, java.io.Serializable id)
          Obtiene un objeto del tipo parámetro bean representado por el serializable id
 int obtenerCount(java.lang.String clase, java.lang.String where)
          Obtiene el número de datos representados por la clase del objeto que mapea la tabla en BBDD, filtrados por filtro
 java.lang.Integer obtenerCuantos(java.lang.String consulta, java.lang.Object[] param)
          Obtiene el número de registros que se obtiene al calcular la consulta con los parámetros que se pasan.
 java.util.Collection obtenerRango(java.lang.String clase, int inicio, int cuantos, java.lang.String campoOrden, int tipoOrden, java.lang.String where)
          Obtiene una colección de los datos representados por la clase del objeto que mapea la tabla en BBDD.
protected  org.hibernate.Session obtenerSession()
          Obtiene el objeto sesión, devuelve una sesión del pool de sesiones o la sesión privada en la que está abierta la transacción.
 java.util.Collection obtenerTodas(java.lang.String clase)
          Otiene una colección de todos los datos representados por la clase del objeto que mapea la tabla en BBDD.
 void refrescarBean(java.lang.Object bean)
          Actualiza el bean con los datos obtenidos de la BBDD
 void refrescaSesion()
          Este método realiza los cambios en la BBDD que tiene cacheados, para que mientras se mantenga la transacción se puedan hacer consultas a la BBDD y ver estos cambios.
 void rollback()
          Método para realizar 'rollback' en la transacción abierta.
 
Methods inherited from class org.springframework.orm.hibernate3.support.HibernateDaoSupport
checkDaoConfig, closeSessionIfNecessary, convertHibernateAccessException, createHibernateTemplate, getHibernateTemplate, getSession, getSession, getSessionFactory, releaseSession, setHibernateTemplate, setSessionFactory
 
Methods inherited from class org.springframework.dao.support.DaoSupport
afterPropertiesSet, initDao
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

miTransaction

protected org.hibernate.Transaction miTransaction
Objeto 'Transaction' privado de la clase


miSession

protected org.hibernate.Session miSession
Objeto 'Session' privado de la clase


logger

protected final org.apache.commons.logging.Log logger
Atributo para la gestión de los logs

Constructor Detail

DaoImp

public DaoImp()
Method Detail

obtenerSession

protected org.hibernate.Session obtenerSession()
Obtiene el objeto sesión, devuelve una sesión del pool de sesiones o la sesión privada en la que está abierta la transacción.

Returns:

inicializarMiSession

protected void inicializarMiSession()
Inicicaliza las variables privadas miSession y miTransaction


cerrarSession

protected void cerrarSession(org.hibernate.Session sesion)
Cierra la transacción. Si la sessión que se pasa como argumento no es nula se comprueba que no está abieta la transacción. Si es así cierra la sesión.
Si la transacción está abierta el objeto sesión que se pasa es el atributo privado de la clase que mantiene la transacción por lo que en este caso no se cierra para mantener esta.

Parameters:
sesion -

encontrarPorEjemplo

protected java.util.List encontrarPorEjemplo(java.lang.Object bean)
Implementación de findByExample de Hibernate teniendo en cuenta la sesión privada si se ha iniciado la transacción a base de datos.

Parameters:
bean -
Returns:

crearQuery

protected org.hibernate.Query crearQuery(java.lang.String consulta,
                                         java.lang.Object[] parametros,
                                         org.hibernate.Session session)
Crea un objeto Query de Hibernate a partir de la sesión con la consulta cargandole los parámetros que se pasan por argumentos

Parameters:
consulta -
parametros -
session -
Returns:

encontrar

protected java.util.List encontrar(java.lang.String consulta,
                                   java.lang.Object[] parametros,
                                   java.lang.Integer inicio,
                                   java.lang.Integer cuantos)
Implemetación de la función find de Hibernate teniendo en cuenta la sesión privada.
Obtiene una lista de objetos de la consulta límitando el resultado. El inicio será a partir del valor marcado por inicio y el tamaño de la colección será el valor de cuantos

Parameters:
consulta -
parametros -
Returns:

isAbiertaTransaccion

public boolean isAbiertaTransaccion()
Indica si está abierta la transacción

Specified by:
isAbiertaTransaccion in interface Dao

beginTransaction

public void beginTransaction()
Abre una transacción.
Crea dos objetos privados. Se obtiene de la factoría de sesiones de Hibernate un objeto Session y a partir de esta uno tipo Transaccion.
Estos objetos se cargarán como objetos de la clase y mientras esté abierta la transacción a BBDD todas las acciones que se realicen con el Dao se realizarán a través de esta sesión

Specified by:
beginTransaction in interface Dao

commit

public void commit()
Método para realizar 'commit' en la transacción abierta.
Si la transacción está abierta, realiza el commit en el objeto Transaction privado e inicializa el atributo Session

Specified by:
commit in interface Dao

rollback

public void rollback()
Método para realizar 'rollback' en la transacción abierta.
Si la transacción está abierta, realiza el rollback en el objeto Transaction privado e inicializa el atributo Session

Specified by:
rollback in interface Dao

obtenerRango

public java.util.Collection obtenerRango(java.lang.String clase,
                                         int inicio,
                                         int cuantos,
                                         java.lang.String campoOrden,
                                         int tipoOrden,
                                         java.lang.String where)
Obtiene una colección de los datos representados por la clase del objeto que mapea la tabla en BBDD.
Estará filtrado por filtro y ordenados de manera tipoOrden por orden desde el registro inicio y cuantos representa el tamaño de la colección.
Obtiene la sesión de BBDD del pool de sesiones si la transacción no está abierta (para consultas) o de la sesión privada del dao cuando la tranasacción este abierta.

Specified by:
obtenerRango in interface Dao
Parameters:
clase - Clase java que mapea la tabla en BBDD
inicio - La colección comienza en este registro
cuantos - Tamaño de la colección
orden - Campo de ordenación
tipoOrden - Manera de ordenar
filtro - Restrición que se añadirá a la consulta
Returns:

obtenerTodas

public java.util.Collection obtenerTodas(java.lang.String clase)
Otiene una colección de todos los datos representados por la clase del objeto que mapea la tabla en BBDD.
Internamente llama al método encontrar

Specified by:
obtenerTodas in interface Dao
Parameters:
clase - Clase java que mapea la tabla en BBDD
Returns:

ejecutarConsulta

public java.util.Collection ejecutarConsulta(java.lang.String consulta)
Devuelve una colección de datos ejecutando la consulta.
Internamente llama al método encontrar

Specified by:
ejecutarConsulta in interface Dao
Parameters:
consulta -
Returns:

obtenerCount

public int obtenerCount(java.lang.String clase,
                        java.lang.String where)
Obtiene el número de datos representados por la clase del objeto que mapea la tabla en BBDD, filtrados por filtro

Specified by:
obtenerCount in interface Dao
Parameters:
clase - Clase java que mapea la tabla en BBDD.
Obtiene la sesión de BBDD del pool de sesiones si la transacción no está abierta (para consultas) o de la sesión privada del dao cuando la tranasacción este abierta.
filtro - Restrición que se añadirá a la consulta
Returns:

obtenerCuantos

public java.lang.Integer obtenerCuantos(java.lang.String consulta,
                                        java.lang.Object[] param)
Obtiene el número de registros que se obtiene al calcular la consulta con los parámetros que se pasan.
Realiza un 'select count(*)' de la consulta HQL. como argumentos.

Specified by:
obtenerCuantos in interface Dao
Parameters:
consulta -
param -
Returns:

obtenerBean

public java.util.Collection obtenerBean(java.lang.Object bean)
Obtiene una colección de objetos del tipo bean a partir de las propiedades cargadas en el parámetro bean
Internamente se realiza una llamada a encontrarPorEjemplo

Specified by:
obtenerBean in interface Dao
Parameters:
bean -
Returns:

obtenerBean

public java.lang.Object obtenerBean(java.lang.Object bean,
                                    java.io.Serializable id)
Obtiene un objeto del tipo parámetro bean representado por el serializable id

Specified by:
obtenerBean in interface Dao
Parameters:
bean -
id -
Returns:

actualizaBean

public void actualizaBean(java.lang.Object bean)
                   throws BaseDatosYingoException
Actualiza en BBDD los valores cargados en las propiedades del parámetro bean

Specified by:
actualizaBean in interface Dao
Parameters:
bean -
Throws:
BaseDatosYingoException - Cuando la transacción no está abierta y cuando se produzca algún error en BBDD

refrescaSesion

public void refrescaSesion()
                    throws BaseDatosYingoException
Este método realiza los cambios en la BBDD que tiene cacheados, para que mientras se mantenga la transacción se puedan hacer consultas a la BBDD y ver estos cambios.
Este método no significa que se realice 'commit' de la transacción.

Specified by:
refrescaSesion in interface Dao
Throws:
BaseDatosYingoException - Cuando la transacción no está abierta

creaBean

public void creaBean(java.lang.Object bean)
              throws BaseDatosYingoException
Inserta en la BBDD un registro con los datos que se han cargado en las propiedades del objeto bean en la tabla que representa la clase del objeto bean

Specified by:
creaBean in interface Dao
Parameters:
bean -
Throws:
BaseDatosYingoException - Cuando la transacción no está abierta o cuando hay error al insertar

borraBean

public void borraBean(java.lang.Object bean)
               throws BaseDatosYingoException
Borra el registro que representa el bean de la bbdd

Specified by:
borraBean in interface Dao
Parameters:
bean -
Throws:
BaseDatosYingoException - Cuando la transacción no está abierta o cuando hay error al borrar

refrescarBean

public void refrescarBean(java.lang.Object bean)
Actualiza el bean con los datos obtenidos de la BBDD

Specified by:
refrescarBean in interface Dao
Parameters:
bean -

ejecutarConsultaParametros

public java.util.Collection ejecutarConsultaParametros(java.lang.String consulta,
                                                       java.lang.Object[] parametros)
Devuelve una colección de datos ejecutando contra la BBDDD la consulta con los parámetros que se pasan como argumentos.
Internamente llama al método encontrar

Specified by:
ejecutarConsultaParametros in interface Dao
Parameters:
consulta -
parametros -
Returns:

borrarConsultaParametros

public int borrarConsultaParametros(java.lang.String consulta,
                                    java.lang.Object[] parametros)
                             throws BaseDatosYingoException
Borra los registros que coincidan con la consulta con los parámetros que se pasan como argumentos.

Specified by:
borrarConsultaParametros in interface Dao
Parameters:
consulta -
parametros -
Returns:
En número de filas borradas
Throws:
BaseDatosYingoException - Cuando la transacción no está abierta o cuando hay error al borrar

ejecutarConsultaParametrosRango

public java.util.List ejecutarConsultaParametrosRango(java.lang.String consulta,
                                                      java.lang.Object[] parametros,
                                                      java.lang.Integer inicio,
                                                      java.lang.Integer cuantos)
Devuelve una colección de datos ejecutando contra la BBDDD la consulta con los parámetros que se pasan como argumentos.
La colección tendrá el tamaño representado por cuantos y comenzará en el registro inicio
Internamente llama al método encontrar

Specified by:
ejecutarConsultaParametrosRango in interface Dao
Parameters:
consulta -
parametros -
inicio -
cuantos -
Returns:

ejecutaConsultaUnResultado

public java.lang.Object ejecutaConsultaUnResultado(java.lang.String consulta,
                                                   java.lang.Object[] parametros)
                                            throws BaseDatosYingoException
Devuelve un sólo objeto representado un sólo registro al ejecutar la consulta con los parámetros que se pasan como argumentos.
Internamente llama al método encontrar

Specified by:
ejecutaConsultaUnResultado in interface Dao
Parameters:
consulta -
parametros -
Returns:
Throws:
BaseDatosYingoException - Cuando la consulta devuelve más de un resultado

getConsultaXML

public java.util.Collection getConsultaXML(java.lang.String consulta,
                                           java.lang.Object[] parametros)
Devuelve una colección de objetos que representan un nodo xml, ejecutando contra la BBDDD la consulta con los parámetros que se pasan.
Se obtiene una sesión del tipo EntityMode.DOM4J a partir de la sesión que se obtiene de la llamada al método obtenerSession. Antes se refresca las sesión para que la consulta obtenga todos los cambios realizados con la sesión. como argumentos.

Specified by:
getConsultaXML in interface Dao
Parameters:
consulta -
parametros -
Returns: