Spring + Hibernate.
Una combinación que reduce ampliamente el tiempo de desarrollo. Spring provee
un soporte muy amplio para Hibernate. En particular, tiene implementaciones de
DAO que ofrecen variadas utilidades para acceder al Hibernate Session.
La clase HibernateDaoSupport
Spring provee la clase HibernateDaoSupport,
la cual implementa todas las funcionalidades de Hibernate y ademas implementa las
buenas prácticas que desarrolladores inexpertos suelen pasar por alto, como el
tratamiento de transacciones, apertura y cierre de seciones automáticamente,
entre otras. Todas ellas listas para implementar en nuestros DAO mediante el método
getHibernateTemplate().
HibernateTemplate
En particular, uno de los métodos más útiles que provee es getHibernateTemplate(). Este método
devuelve un template con varios métodos útiles, que simplifican el uso de
Hibernate en los DAOs. Estos métodos suelen encapsular varias excepciones
propias de acceso a datos de Hibernate dentro de una DataAccessException que hereda de RuntimeException.
DAO Hibernate + Spring IoC
La forma más simple de integrar
Hibernate con Spring es crear clases que hereden de HibernateDaoSupport.
Interfaz del DAO
La interfaz del DAO es simple, y no necesita heredar ni
restringir nada particular:
public interface PersonaDao {guardarPersona(Persona persona);}
Ejemplo de Implementación de DAO en Hibernate
La implementación del DAO deberá extender HibernateDaoSupport.
Esta clase nos proveerá de varios métodos útiles para
manipular la Hibernate Session.
public class PersonaDaoImpl extends HibernateDaoSupport implements PersonaDao {public void guardarPersona (Persona persona) {getHibernateTemplate().save(persona);}}
Ejemplo de Configuración de Dao en Hibernate
En el XML de Spring
deberemos declarar el Dao y la
Factory de Hibernate.
Al Dao se le
asocia el factory de Hibernate del
cual Spring sacará la Hibernate Session.
com/enterprise/dominio/Persona.hbm.xml org.hibernate.dialect.Oracle9Dialect
Uso de la Session directamente
Es posible utilizar la Session
de Hibernate directamente, a través
del método getSession() que provee HibernateDaoSupport.
Cuando se pide la Session
de esta forma, es fundamental:
Session session = null;try {session = getSession();//codigo del negocio...}finally {releaseSession(session);}
Configuración de Hibernate con Annotations en Spring
Hibernate puede
configurarse con annotations en vez
de archivos XML para definir los mapeos.
Para esto se usa la clase de Spring AnnotationSessionFactoryBean.
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">com.enterprise.dominio.Persona true
Y la clase de dominio con annotations:
package com.enterprise.dominio;import javax.persistence.Table;import javax.persistence.Id;import javax.persistence.Column;import javax.persistence.Entity;@Entity@Table(name = "TABLA_PERSONA")public class Persona {@Id@Column(name = "COLUMNA_PK")private String documentoDeIdentidad;@Column(name = "NOMBRE")private String nombre;//getters and setters...}
No hay comentarios.:
Publicar un comentario