Configurar Hibernate 4.3.7 con Spring MVC 4.0.6
Aveces cuando creamos un proyecto Spring MVC , configurar Hibernate para usarlo en nuestro proyecto MVC puede llegar a ser una auténtica aventura ( no lo digo yo solo , lo he leido en varios post mientras buscaba información) ,
Para quitarte el mal trago de buscar información , te voy a dejar este post con la configuración necesaria para configurar Hibernate 4.3.7 que es la última versión estable hasta el momento, creando un proyecto Spring MVC desde cero.
Empecemos...
Primer paso: Crear el nuevo proyecto.
Abrimos nuestro STS ( Spring Tool Suite) , un derivado de Eclipse para trabajar con Spring, y vamos a Nuevo-> Spring-> Spring Project
Segundo paso: Elegimos Spring MVC Project
Y escribimos el título de nuestro proyecto.
Tercer paso: Elegimos el nombre del paquete.
Finalmente pulsamos "Finish" y ya tenemos nuestro proyecto por defecto creado. Ahora pasamos a la configuración y creación de nuestras capas. Vamos a utilizar el patrón Facade ( Fachada )
Creando las capas:
Como he dicho antes , vamos a crear las capas, en nuestro proyecto vamos a tener la siguiente estructura:
Nuestro proyecto tendrá la siguiente pinta :
Descripción de los paquetes:
-Command : Aquí está el objeto comando que se auto-seteará en el controlador gracias a la anotación @ModelAttribute, no olvides que el valor de <form:input path="name" /> , el valor del atributo path , corresponde al nombre de la propiedad del objeto PersonCommand.
-Facade y FacadeImpl: Facade contiene la interfaz que describe los métodos que tendrá la capa de negocio PersonFacade y FacadeImpl contendrá la implementación de esa interfaz.
-DAO y DAOImpl: Lo mismo que la capa facade descrita arriba pero aquí tenemos la capa MODELO , la capa de datos , son los objetos que acceden a base de datos . DAO = Data Access Object.
Configuración de Hibernate:
Una vez presentada nuestra estructura del proyecto , vamos a configurar hibernate , para ello vamos a crear el archivo hibernate.cfg.xml dentro de la carpeta Spring , situada en:
El archivo hibernate.cfg.xml tendrá el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns:task="http://www.springframework.org/schema/task"
xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/prueba" />
<property name="username" value="root" />
<property name="password" value="tupassword" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.gabrielglez.main.model.Person</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
Ahora vamos a utilizarlo en nuestro contexto , para ello vamos a el archivo web.xml y vamos a añadirlo como un nuevo contexto.
Listo , ya con esto nuestro proyecto MVC cargará nuestra configuración de Hibernate ,ya tenemos Hibernate configurado. Recuerda que si creas otro archivo de configuración , como por ejemplo la configuración de spring-security añadelo ahí también.
Explicación del proyecto:
Para no extenderme mucho , la explicación del proyecto está en el própio código que puedes descargar de mi GitHub. He decidido explicarlo en el própio código para no salirme de contexto , ya que quería centrarme en la explicación de la configuración de hibernate en un proyecto Spring MVC.
Proyecto en GitHub: https://github.com/tsw1985/HelloHibernate
Conclusión:
La "dificultad" de la configuración de Hibernate en un proyecto Spring MVC puede estar en que configuración es mediante XML y dependiendo de la versión de hibernate configurar el bean del TransactionManager puede cambiar , lo mismo para la creación del SessionFactory.
Pero este proyecto está funcionando para la última versión actual de hibernate a fecha de hoy , Hibernate 4.3.7.