Escolar Documentos
Profissional Documentos
Cultura Documentos
SpringHibernate
Usando Hibernate en Spring.
Spring, Hibernate
Updated Feb 4, 2010 by juan.rop...@gmail.com
Descripción
Hibernate es muy fácil de configurar y usar con Spring.
Toda aplicación de Spring que se conecta a una base de datos, necesita de un bean llamado DataSource. En
este bean se establecen los parametros para la conexión a la base.
Este objeto de Hibernate maneja las sesiones que ejecutan las distintas transacciones a la base de datos.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:../hbms</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.max_fetch_depth">$
{hibernate.max_fetch_depth}</prop>
<prop key="hibernate.use_outer_join">$
{hibernate.use_outer_join}</prop>
</props>
</property>
</bean>
<!--========== /Hibernate SessionFactory ==========-->
HibernateTemplate
Este objeto es la clave de nuestros DAOs (Data Access Objects). Este objeto se encarga de guardar, borrar,
listar y obtener los objetos de la base de datos. También se encarga de la excepciones ahorrandonos así
mucho trabajo.
<beans>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:../hbms</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.max_fetch_depth">$
{hibernate.max_fetch_depth}</prop>
<prop key="hibernate.use_outer_join">$
{hibernate.use_outer_join}</prop>
</props>
</property>
</bean>
<!--========== /Hibernate SessionFactory ==========-->
<!--========== Hibernate Template ==========-->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
Código
Una vez configurado Hibernate creamos una clase abstracta que extienda de HibernateDaoSupport. ¡¡ Y
listo !! :D.
AbstractHibernateDAO
Esta clase se encarga de realizar las altas, bajas, modificaciones, actualizaciones y listados de nuestros
objetos. Por ello y para no escribir código de más esta clase es abstracta y utiliza generics .
Como se puede observar en el código los tipos genericos que utiliza son DomainObject y KeyType, ambos
extienden de Serializable ya que sino Hibernate no los puede persistir.
package ar.com.usca.model.dao.definition;
import java.io.Serializable;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
});
}
public int count(){
List list = getHibernateTemplate().find(
"select count(*) from " + domainClass.getName() + " o");
Integer count = (Integer) list.get(0);
return count.intValue();
}
}
Extendiendo de AbstractHibernateDAO
package ar.com.usca.model.dao.imp;
import ar.com.usca.model.dao.definition.AbstractHibernateDAO;
import ar.com.usca.model.entity.Seniority;
@Override
protected Class<Seniority> getDomainClass() {
return Seniority.class;
}
}
Como pueden observar la clase AbstractHibernateDAO nos simplifico mucho las cosas, solo tuvimos que
implementar un método y ya podemos realizar altas, bajas y modificaciones de Seniorities en nuestra base de
datos. Sólo resta agregar métodos para operaciones especiales, como por ejemplo, obtener un Seniority a
partir de un nombre.