Curso de Desarrollo Web

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Curso de Desarrollo Web - Presentation Transcript

    1. Struts + Spring + Hibernate MVC + Servicios
    2. Modelo General Acceso a Datos: Hibernate Servicios: DAO’s Control: Struts Action’s Vista: Struts + JSP Factory: Spring
    3. Configuración JLPP Configuración del Proyecto
    4. Configuración de Proyecto
      • Desde CVS
        • Pregunte a su administrador de CVS
      • Desde Cero
        • Siguiente diapositiva
      Configuración del Proyecto
    5. Creación del Proyecto (Librerias)
      • Crear un nuevo proyecto en Eclipse
      • Agregar las librerías requeridas al directorio WebContent/WEB-INF/lib.
        • Hibernate
        • Struts
        • Spring
        • TLD’s comunes (consultar administrador)
      Configuración del Proyecto
    6. Creación del Proyecto (Librerias)
      • Recargar el proyecto
      • Deberían aparecer los WebLibraries en el mismo.
      Configuración del Proyecto
    7. Creación del Proyecto (Source)
      • Agregar el sourcefolder WEB-INF/classes al proyecto.
        • Ver procedimiento .
      Configuración del Proyecto
    8. Creación del Proyecto (Spring)
      • En la cartepa WEB-INF/classes crear un archivo applicationContext.xml
      Configuración del Proyecto
    9. applicationContext.xml <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:aop=&quot;http://www.springframework.org/schema/aop&quot; xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot; xsi:schemaLocation=&quot; 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&quot;> </beans> Configuración del Proyecto
    10. Creación del Proyecto (Spring)
      • Abrir el descriptor de aplicación del Proyecto y agregar el código de Spring.
      <listener> <listener-class> edu.conalep.moroleon.common.spring.Decorator </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> Configuración del Proyecto
    11. Creación del Proyecto (Spring)
      • La clase Decorator puede ser reemplazada por la clase original de Spring, pero Decorator lanza un mensaje de error en caso de que este ocurra.
      Configuración del Proyecto
    12. Creación del Proyecto (Hibernate)
      • Crear el paquete mapping donde se colocaran los mapeos de Hibernate.
      • Crear el archivo hibernate.properties en la carpeta src.
      • Crear los archivos de mapeo de Hibernate necesarios.
      Configuración del Proyecto
    13. 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 Configuración del Proyecto
    14. Creación del Proyecto (Hibernate + Spring)
      • En la carpeta WEB-INF/classes crear el archivo hibernate.xml .
      • En el archivo applicationContext.xml incluir el archivo hibernate.xml
      <import resource=“hibernate.xml” /> Configuración del Proyecto
    15. hibernate.xml (parte 1) <bean class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;> <property name=&quot;locations&quot;> <value>classpath:hibernate.properties</value> </property> </bean> <bean id=&quot;ds&quot; class=&quot;org.apache.commons.dbcp.BasicDataSource&quot; destroy-method=&quot;close&quot;> <property name=&quot;driverClassName&quot; value=&quot;${hibernate.connection.driver_class}&quot; /> <property name=&quot;url&quot; value=&quot;${hibernate.connection.url}&quot; /> <property name=&quot;username&quot; value=&quot;${hibernate.connection.username}&quot; /> <property name=&quot;password&quot; value=&quot;${hibernate.connection.password}&quot; /> </bean> Configuración del Proyecto
    16. hibernate.xml (parte 2) <bean id=&quot;sf&quot; class=&quot;org.springframework.orm.hibernate3.LocalSessionFactoryBean&quot;> <property name=&quot;dataSource&quot; ref=&quot;ds&quot; /> <property name=&quot;mappingResources&quot;> <list> <value>xml’s de mapeo</value> </list> </property> <property name=&quot;hibernateProperties&quot;> <value> hibernate.dialect=dialecto_hibernate hibernate.show_sql=true </value> </property> </bean> Configuración del Proyecto
    17. Creación del proyecto (Struts)
      • En la carpeta WEB-INF/classes crear un archivo struts.xml
      <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;> <struts> <constant name=&quot;struts.objectFactory&quot; value=&quot;spring&quot; /> </struts> Configuración del Proyecto
    18. Creación del proyecto (Struts)
      • En el descriptor de aplicación agregar el filter de Struts.
      <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Configuración del Proyecto
    19. Prueba Inicial
      • Arrancar el contexto para revisar si este esta funcionando de manera adecuada.
      • La configuración del proyecto esta entonces completa.
      Configuración del Proyecto
    20. Los Mapeos Hibernate JLPP Acceso a Datos: Hibernate
    21. Consideraciones
      • Los mapeos deberian estar en su propio paquete llamado mapping.
      • El modelo general de mapeo:
      <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE hibernate-mapping PUBLIC &quot;-//Hibernate/Hibernate Mapping DTD//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&quot;> <hibernate-mapping package=&quot;edu.conalep.moroleon.opd.mapping&quot;> </hibernate-mapping> Acceso a Datos: Hibernate
    22. 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.
      Acceso a Datos: Hibernate
    23. Mapeo Básico de Clase <class name=“Clase” table=“tabla”> <id name=“id_de_clase” column=“id_de_tabla” type=“int|long”> <generator class=“increment” /> </id> <!-- 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> Acceso a Datos: Hibernate
    24. Mapeo de relaciones Uno a Varios <class name=“Padre” table=“padre”> <id name=“id” type=“long” column=“id_padre”> <generator class=“increment” /> </id> <set name=“hijos”> <key column=“id_padre” /> <one-to-many class=“Hijo” /> </set> </class> <class name=“Hijo” table=“hijo”> <id name=“id” type=“long” column=“id_padre”> <generator class=“increment” /> </id> <many-to-one name=“padre” column=“id_padre” class=“Padre” /> </class> Acceso a Datos: Hibernate
    25. Mapeo de relaciones Uno a Uno <class name=“Padre” table=“padre”> <id name=“id” type=“long” column=“id_padre”> <generator class=“increment” /> </id> <one-to-one name=“hijo” class=“Hijo” /> </class> <class name=“Hijo” table=“hijo”> <id name=“id” type=“long” column=“id_padre”> <generator class=“foreign”> <param name=“property”>padre</param> </generator> </id> <one-to-one name=“padre” class=“Padre” /> </class> Acceso a Datos: Hibernate
    26. Mapeo de relaciones Varios a Varios <class name=“Libro” table=“libro”> <id name=“id” type=“long” column=“id_libro”> <generator class=“increment” /> </id> <set name=“autores” table=“libro_autor”> <key column=“id_libro” /> <many-to-many class=“Autor” /> </set> </class> <class name=“Autor” table=“autor”> <id name=“id” type=“long” column=“id_autor”> <generator class=“increment” /> </id> <set name=“libros” table=“libro_autor” inverse=“true”> <key column=“id_autor” /> <many-to-many class=“Libro” /> </set> < /class> Acceso a Datos: Hibernate
    27. Mapeo de Herencia <class name=“Padre” table=“padre”> <id name=“id” type=“long” column=“id_padre”> <generator class=“increment” /> </id> <joined-subclass name=“Hijo1” table=“hijo1”> <key column=“id_hijo1” /> <property … /> </joined-subclass> <joined-subclass name=“Hijo2” table=“hijo2”> <key column=“id_hijo2” /> </joined-subclass> </class> Acceso a Datos: Hibernate
    28. 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.
      Acceso a Datos: Hibernate
    29. Servicios JLPP Servicios: DAO’s
    30. 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
    31. Modelo Básico de Servicio
      • Un servicio es una interfaz que debería implementar métodos para:
        • Agregar datos
        • Editar datos
        • Eliminar datos
        • Recuperar datos
        • Recuperar un dato unico
      Servicios: DAO’s
    32. Interfaz Básica de Servicio Servicios: DAO’s public interface BasicDao { public boolean agregar(Object o); public boolean editar(Object o); public boolean borrar(Object o); //Buscar duplicados antes de agregar public boolean hayRepetido(Object o); //Buscar dependientes antes de borrar public boolean hayDependiente(Object o); public List cargar(); public List cargarUno(Serializable id); public List cargarCondicion(String prop, Object val); //Seter y Getter del SessionFactory de Hibernate public void setSessionFactory(SessionFactry sf); public SessionFactory getSessionFactory(); }
    33. 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
    34. Herencia Sugerida Servicios: DAO’s BasicDao GenericDao SpecialDao SpecificDao1 SpecificDao2 Métodos extra y operaciones especializadas, como cargarLibrosDeAutor o un eliminar diferente podrían estar aqui Operaciones Triviales colocadas aquí
    35. Struts JLPP Control: Struts Action’s Vista: Struts + JSP
    36. 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.
      Control: Struts Action’s Vista: Struts + JSP
    37. 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.
      Control: Struts Action’s Vista: Struts + JSP
    38. 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.
      Control: Struts Action’s Vista: Struts + JSP <action name=“nombre” class=“el_bean”> </action> <bean id=“el_bean” />
    39. Spring JLPP Factory: Spring
    40. Consideraciones
      • Traten de poner nombres significativos a los beans.
      • Si son muchos beans utilizar archivos separados y la etiqueta import.
      Factory: Spring
    41. 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
    42. Ejemplo de Spring Factory: Spring <bean name=“un_dao” class=“clase_de_dao”> <!-- Le configura el SessionFactory al dao --> <property name=“sessionFactory” ref=“sf” /> </bean> <!– Cada vez que se requiera el action crea una nueva instancia --> <bean name=“action_dao” class=“clase_action” scope=“prototype”> <!-- Y establece el dao para el action --> <property name=“dao” ref=“un_dao” /> </bean>
    43. 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

    + juliocombativojuliocombativo, 3 years ago

    custom

    4599 views, 0 favs, 2 embeds more stats

    Material del curso de web develop en ITSUR

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 4599
      • 4460 on SlideShare
      • 139 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 201
    Most viewed embeds
    • 128 views on http://escritoriopaljava.blogspot.com
    • 11 views on http://jorgepalacio.com

    more

    All embeds
    • 128 views on http://escritoriopaljava.blogspot.com
    • 11 views on http://jorgepalacio.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories