Ir al contenido principal

Configurar Hibernate 4.3.7 con Spring MVC 4.0.6

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.


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.










Entradas populares de este blog

LPIC-1 101 y 102

Certificación LPIC-1 101-102. Linux Certification Institute. Esta entrada es especial para mi porque he aprobado el certificado LPIC-1 de Linux. Al buscar información sobre las certificaciones , pues encontré información confusa y sé de algunas personas que quieren prepararse el exámen para un futuro , y si las bases de los exámenes no cambian quería aclararle las dudas. Quien no sepa lo que es LPIC-1 , es una certificación del Linux Professional Institute  la cual avala que tienes los conocimientos mínimos para gestionar un sistema operativo Linux independientemente de su distribución, como siempre te pongo la información más extendida   aquí .  El LPIC-1 es el primer exámen de todos y te digo desde ya que tiene su dificultad. Esto lo digo porque yo mismo al llevar un par de años con Linux , creía que mis conocimientos en Linux eran suficientes y solo había visto la punta del iceberg. Y en el primer nivel tocas muchas cosas. Lo que te quiero decir con esto es que e

Juego de la Serpiente con Java Swing

En esta entrada les voy a mostrar como hice el juego de la serpiente. Cuando tenía 15 años lo intente hacer y en ese momento lo ví como algo extremadamente complejo.  En su momento no vi mucha información de como hacer el juego ( o no supe encontrar ) , y por si alguien está en esta situación , aquí va mi aportación para intentar aclarar sus dudas.    He visto muchos códigos que lo han hecho mucho mejor, dibujando en el Frame y mucho más trabajado, pero yo personalmente soy partidiario de que siempre es mejor ver las cosas desde su nivel más simple, y una vez entendida la idea, ya luego pasarla a otra cosa, darle mejor aspecto y adornos son valores añadidos. Para el que no sepa como funciona el juego de la serpiente ( cosa que dudo , todos tuvimos un Nokia ) , es una serpientita a la que le van apareciendo frutas , ella va comiendo y se va haciendo grande, hasta que llega un momento que se hace muy difícil controlarla porque es demasiado grande y chocamos con nosotros mismos.

Añadiendo autocompletado a un JTextField de Java Swing

Esta vez para un trabajo de clase en  Java Swing  me vi con la necesidad de tener un JTextField con autocompletado ( como la caja de texto de Google cuando buscas algo ) y como no viene por defecto el JTextField con esta característica , pues tuve que hacerme uno. Pero en este caso no me hacía falta consultar una base de datos para rellenarlo según vas escribiendo en él, sino que a este ya le doy los datos a filtrar de antemano. Tú dirás ... pero si hay miles en internet ya hechos , por qué reinventar la rueda ...,  Ya , ya lo sé , pero en algunos de los que ví , no me gustaba la manera de como se implementaban en el código para poder usarlo , otros no me gustaban como se veían visualmente , y lo más importante ... yo no me podía quedar con la duda de como se hacía uno ( esta última era la que más me podía jeje , yo y mi curiosidad ). ¿Cómo lo uso ? Te explico como funciona el componente GTextField , tan simple como instanciarlo y en su constructor pasarle t