Professional Documents
Culture Documents
Hibernate
MVC + Servicios
DAO Spring Struts Action Hibernate Struts View
Modelo General
Factory: Spring
Control: Struts Action’s
Servicios: DAO’s
JLPP
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>
JLPP
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>
JLPP
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