Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SSH 2
SSH 2
Hibernate
MVC + Servicios
DAO Spring Struts Action Hibernate Struts View
Modelo General
Vista: Struts + JSP
Factory: Spring
Control: Struts Action’s
Servicios: DAO’s
Configuración de
Proyecto
• Desde CVS
– Pregunte a su administrador de CVS
• Desde Cero
– Siguiente diapositiva
applicationContext.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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
</beans>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
hibernate.propeties
hibernate.connection.driver_class=driver_jdbc
hibernate.connection.url=url_odbc
hibernate.connection.username=usuario_base_de_datos
hibernate.connection.password=contraseña
hibernate.dialect=dialecto_hibernate
hibernate.show_sql=true
hibernate.xml (parte 1)
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:hibernate.properties</value>
</property>
</bean>
hibernate.xml (parte 2)
<bean id="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Prueba Inicial
• Arrancar el contexto para revisar si
este esta funcionando de manera
adecuada.
• La configuración del proyecto esta
entonces completa.
Consideraciones
• Los mapeos deberian estar en su
propio paquete llamado mapping.
• El modelo general de mapeo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="edu.conalep.moroleon.opd.mapping">
</hibernate-mapping>
Clases
• Los mapeos hibernate se crean a
partir de clases.
• Estas clases se definen como
elementos class dentro del mapeo.
• Toda clase debe tener un id.
• Las clases pueden tener varias
propiedades.
<!-- El atributo type puede ser float, double, date, int, long o string -->
<property name=“propiedad” column=“columna” type=“int” />
<!-- Las propiedades string pueden llevar una longitud -->
<property name=“propiedad2” column=“columna2” type=“string” length=“12” />
<!-- Puede marcarse alguna propiedad como propiedad unica -->
<property name=“propiedad3” column=“columna3” type=“int” unique=“true” />
</class>
<set name=“hijos”>
<key column=“id_padre” />
<one-to-many class=“Hijo” />
</set>
</class>
Mapeo de Herencia
<class name=“Padre” table=“padre”>
<id name=“id” type=“long” column=“id_padre”>
<generator class=“increment” />
</id>
Generación de Base de
Datos y POJO’s
• Si el proyecto incluye un archivo
build.xml o build-hibernate.xml puede
utilizarse el target export-ddl para
crear la base de datos y gen-java
para crear los POJO’S.
• Por seguridad los POJO’s quedan en
otra carpeta con el nombre
hibernate.
Servicios: DAO’s
DAO Spring Struts Action Hibernate Struts View
Consideraciones
• Los servicios se localizan en un
paquete service o bien en paquetes
services de cada paquete de modulo.
• Son clases JAVA que implementan las
funcionalidades necesarias para
abstraer Hibernate de las capas
superiores.
Servicios: DAO’s
DAO Spring Struts Action Hibernate Struts View
Servicios: DAO’s
DAO Spring Struts Action Hibernate Struts View
Servicios: DAO’s
DAO Spring Struts Action Hibernate Struts View
Implementación
• Los DAO’s pueden implementarse en
base a código puro de Hibernate o
bien utilizando HibernateTemplate,
una clase de Spring.
• Cuando una clase requiera
determinadas funciones extra estas
pueden agregarse en un Dao
heredado.
Servicios: DAO’s
DAO Spring Struts Action Hibernate Struts View
Herencia Sugerida
Operaciones Triviales BasicDao
colocadas aquí
GenericDao SpecialDao
Métodos extra y
operaciones
especializadas, como
SpecificDao1 SpecificDao2
cargarLibrosDeAutor o
un eliminar diferente
podrían estar aqui
Servicios: DAO’s
Struts
JLPP
Consideraciones
• Los actions deberían estar en el
paquete action o en el paquete action
de cada paquete de modulo.
• Los JSP’s que usan struts deberían
estar organizados en paquetes que
representen los modulos y los casos
de uso.
Struts + DAO’s
• Los Action de Struts y las JSP van a
seguir funcionando igual, salvo que las
operaciones con objetos Hibernate se
van a realizar por medio de DAO’s.
• Cada action debe agregar un geter y
seter para un DAO interno que
realice las operaciones.
Cambios al struts.xml
• El atributo class de cada Action
cargado y configurado por Spring
deberá de corresponder con el
nombre del bean que lo crea.
<action name=“nombre” class=“el_bean”>
</action>
Factory: Spring
DAO Spring Struts Action Hibernate Struts View
Consideraciones
• Traten de poner nombres
significativos a los beans.
• Si son muchos beans utilizar archivos
separados y la etiqueta import.
Factory: Spring
DAO Spring Struts Action Hibernate Struts View
Descripción General
• Spring se encarga de instanciar
objetos y configurarlos en tiempo de
ejecución.
• Crea objetos como el SessionFactory
(o Hfactory o Singleton) y los hace
accesibles de una manera sencilla.
Factory: Spring
DAO Spring Struts Action Hibernate Struts View
Ejemplo de Spring
<bean name=“un_dao” class=“clase_de_dao”>
<!-- Le configura el SessionFactory al dao -->
<property name=“sessionFactory” ref=“sf” />
</bean>
Factory: Spring
DAO Spring Struts Action Hibernate Struts View
Implicaciones
• Solamente declarando geters y
seters en las clases y registrando los
beans con spring podemos usarlos con
la certeza de que estarán
completamente configurados.
Factory: Spring