Vamos a por la segunda parte del post. A modo de recordatorio, vamos a crear una aplicación para gestionar nuestros contactos utilizando para ello Maven, Spring MVC e Hibernate. En el anterior post creamos el árbol de directorios de la aplicación utilizando Maven, además añadimos las dependencias y por ultimo creamos la Base de datos (MySQL) .

Aquí dejo de nuevo el árbol de como debe quedar nuestra aplicación, esto nos servirá para no perdernos mientras vamos creando archivos.
Ahora queda configurar un poco el entorno para que Hibernate funcione correctamente, así que vamos a hacer lo siguiente:
Creamos un archivo dentro de la carpeta resources vamos a crear el archivo hibernate.cfg.xml
Este archivo lo que hace es «decirle» a Hibernate que la clase que tiene que mapear se encuentra en com.jesusl.formContact
Aquí tenemos el archivo: /demoweb-hibernate/src/main/resources/hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping class="com.jesuslc.contact.form.Contact" /> </session-factory> </hibernate-configuration>
Ahora vamos a crear un archivo de propiedades donde pondremos las «etiquetas» que vamos a usar en toda la aplicación. Es decir, si en un futuro queremos cambiar «Apellido» por otra etiqueta como «Apellidos» o incluso queremos traducir nuestra aplicación nos será más fácil si todos los elementos a modificar/traducir están en el mismo archivo.
Por ello vamos a crear un archivo dentro de resources llamado messages_es.properties donde tendremos pares etiqueta:significado.
/demoweb-hibernate/src/main/resources/messages_es.properties
label.firstname=Nombre label.lastname=Apellidos label.email=Email label.telephone=Teléfono label.addcontact=Añadir contacto label.menu=Menu label.title=Mi agenda Hibernate label.footer=© jesuslc.com
Ahora vamos a configurar la base de datos MySQL para ello lo que vamos ha hacer es crear también un archivo .properties, llamado jdbc.properties. En él están los datos e acceso a la base de datos.
/demoweb-hibernate/src/main/webapp/WEB-INF/jdbc.properties
jdbc.driverClassName= com.mysql.jdbc.Driver jdbc.dialect=org.hibernate.dialect.MySQLDialect jdbc.databaseurl=jdbc:mysql://localhost:3306/ContactManager jdbc.username=XXXXX jdbc.password=XXXXXX
sss
En este archivo indicamos cómo se llama la base de datos (ContactManager), que tipo de base de datos es (MySQL) y cual es el usuario y la contraseña para acceder al la base de datos.
Ahora vamos a por la parte más importante y que puede traer más quebraderos de cabeza si no la hacemos bien. Son los archivos web.xml y spring-servlet.xml
En web.xml archivo es donde vamos a configurar el nombre del servlet. Este servlet, que se llama spring en nuestro caso, es el que se encarga dede recibir todas las peticiones y redirigirlas a los controladores. El apartado <servlet-mapping> indica qué peticiones del navegador se deben redirigir a qué servlet, en concreto, cualquier petición de cualquier fichero () se redirigirá al servlet spring.
Aquí vemos /demoweb-hibernate/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Spring3-Hibernate</display-name> <welcome-file-list> <welcome-file>list.html</welcome-file> </welcome-file-list> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
El servlet org.springframework.web.servlet.DispatcherServlet también se encarga de cargar todos los beans de Spring Framework que le indiquemos. Para ello, carga un fichero spring-servlet.xml situado en el directorio WEB-INF, junto a web.xml y carga los beans que se indiquen en ese fichero.
/demoweb-hibernate/src/main/webapp/WEB-INF/spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<context:annotation-config />
<context:component-scan base-package="com.jesuslc.contact" />
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
Vamos a comentar un poco el fichero.
- id=»jspViewResolver» donde se encuentra la vista de nuestros modelos MVC.
- id=»propertyConfigurer» aquí le indicamos que tenemos un archivo con propiedades en este caso están las propiedades de conexión a la base de datos
- id=»dataSource» en este caso indica los datos de acceso para conectarse a la BD, ya que la base de datos será nuestra «fuente de datos»
- id=»sessionFactory» Aquí le «decimos» a Spring MVC que vamos a utilizar Hibernate y le decimos donde tiene que leer el archivo de «mapeo» (hibernate.cfg.xml)
Hasta aquí la configuración, ahora solo nos queda tirar código para que nuestra aplicación sea definitiva.
Actualización
Aquí la parte 1: https://jesuslc.com/2013/03/19/poco-a-poco-con-maven-spring-hibernate/
Aquí la parte 3: https://jesuslc.com/2013/04/02/poco-a-poco-con-maven-spring-hibernate-parte-3/
Aquí tenemos un enlace al código https://github.com/jeslopcru/DemowebMSH







Comenta la entrada