SlideShare una empresa de Scribd logo
1 de 43
Struts + Spring + Hibernate MVC + Servicios
Modelo General Acceso a Datos: Hibernate Servicios: DAO’s Control: Struts Action’s Vista: Struts + JSP Factory: Spring
Configuración JLPP Configuración del Proyecto
Configuración de Proyecto ,[object Object],[object Object],[object Object],[object Object],Configuración del Proyecto
Creación del Proyecto (Librerias) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Configuración del Proyecto
Creación del Proyecto (Librerias) ,[object Object],[object Object],Configuración del Proyecto
Creación del Proyecto (Source) ,[object Object],[object Object],Configuración del Proyecto
Creación del Proyecto (Spring) ,[object Object],Configuración del Proyecto
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
Creación del Proyecto (Spring) ,[object Object],<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
Creación del Proyecto (Spring) ,[object Object],Configuración del Proyecto
Creación del Proyecto (Hibernate) ,[object Object],[object Object],[object Object],Configuración del Proyecto
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
Creación del Proyecto (Hibernate + Spring) ,[object Object],[object Object],<import resource=“hibernate.xml” /> Configuración del Proyecto
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
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
Creación del proyecto (Struts) ,[object Object],<?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
Creación del proyecto (Struts) ,[object Object],<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
Prueba Inicial ,[object Object],[object Object],Configuración del Proyecto
Los Mapeos Hibernate JLPP Acceso a Datos: Hibernate
Consideraciones ,[object Object],[object Object],<?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
Clases ,[object Object],[object Object],[object Object],[object Object],Acceso a Datos: Hibernate
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
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
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
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
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
Generación de Base de Datos y POJO’s ,[object Object],[object Object],Acceso a Datos: Hibernate
Servicios JLPP Servicios: DAO’s
Consideraciones ,[object Object],[object Object],Servicios: DAO’s
Modelo Básico de Servicio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Servicios: DAO’s
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(); }
Implementación ,[object Object],[object Object],Servicios: DAO’s
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í
Struts JLPP Control: Struts Action’s Vista: Struts + JSP
Consideraciones ,[object Object],[object Object],Control: Struts Action’s Vista: Struts + JSP
Struts + DAO’s ,[object Object],[object Object],Control: Struts Action’s Vista: Struts + JSP
Cambios al struts.xml ,[object Object],Control: Struts Action’s Vista: Struts + JSP <action name=“nombre” class=“el_bean”> </action> <bean id=“el_bean” />
Spring JLPP Factory: Spring
Consideraciones ,[object Object],[object Object],Factory: Spring
Descripción General ,[object Object],[object Object],Factory: Spring
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>
Implicaciones ,[object Object],Factory: Spring

Más contenido relacionado

La actualidad más candente

Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Ronald Cuello
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)Laura Folgado Galache
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006Samuel Marrero
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2Steven Gomez
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosWilliam Diaz S
 
5. Interacción con el usuario: eventos y formularios
5. Interacción con el usuario: eventos y formularios5. Interacción con el usuario: eventos y formularios
5. Interacción con el usuario: eventos y formulariosLaura Folgado Galache
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jspBoris Salleg
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 

La actualidad más candente (20)

Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)
 
Tema 6
Tema 6Tema 6
Tema 6
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
JSP
JSPJSP
JSP
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
MVC en CakePHP 2.0
MVC en CakePHP 2.0MVC en CakePHP 2.0
MVC en CakePHP 2.0
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
5. Interacción con el usuario: eventos y formularios
5. Interacción con el usuario: eventos y formularios5. Interacción con el usuario: eventos y formularios
5. Interacción con el usuario: eventos y formularios
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jsp
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Java beans en jsp
Java beans en jspJava beans en jsp
Java beans en jsp
 

Similar a Struts+Spring+Hibernate MVC arquitectura

La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2ralphkui
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con HibernateMauro Gomez Mejia
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Devfest Lima2012
Devfest Lima2012Devfest Lima2012
Devfest Lima2012ykro
 
Tutorial building a_geodatabase
Tutorial building a_geodatabaseTutorial building a_geodatabase
Tutorial building a_geodatabaseOSKAR SALGUERO
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Curso de Django | Django Course
Curso de Django | Django CourseCurso de Django | Django Course
Curso de Django | Django Coursealeperalta
 
UDA-Componentes RUP. Árbol
UDA-Componentes RUP. ÁrbolUDA-Componentes RUP. Árbol
UDA-Componentes RUP. ÁrbolAnder Martinez
 
Taller de introducción a Google App Engine
Taller de introducción a Google App EngineTaller de introducción a Google App Engine
Taller de introducción a Google App EngineManuel Martín
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 

Similar a Struts+Spring+Hibernate MVC arquitectura (20)

La Web Semantica
La Web SemanticaLa Web Semantica
La Web Semantica
 
Hibernate - Introducción
Hibernate - IntroducciónHibernate - Introducción
Hibernate - Introducción
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2La Arquitectura De Netbeans V2
La Arquitectura De Netbeans V2
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 
Crear modulos
Crear modulosCrear modulos
Crear modulos
 
Jsf
JsfJsf
Jsf
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Step by step developing with Facebook PHP API by Bruno Kamiche
Step by step developing  with Facebook PHP API by Bruno KamicheStep by step developing  with Facebook PHP API by Bruno Kamiche
Step by step developing with Facebook PHP API by Bruno Kamiche
 
Devfest Lima2012
Devfest Lima2012Devfest Lima2012
Devfest Lima2012
 
Tutorial building a_geodatabase
Tutorial building a_geodatabaseTutorial building a_geodatabase
Tutorial building a_geodatabase
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Curso de Django | Django Course
Curso de Django | Django CourseCurso de Django | Django Course
Curso de Django | Django Course
 
UDA-Componentes RUP. Árbol
UDA-Componentes RUP. ÁrbolUDA-Componentes RUP. Árbol
UDA-Componentes RUP. Árbol
 
Taller de introducción a Google App Engine
Taller de introducción a Google App EngineTaller de introducción a Google App Engine
Taller de introducción a Google App Engine
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
 
Hands on Spring 2.5
Hands on Spring 2.5Hands on Spring 2.5
Hands on Spring 2.5
 
Android Superstar - Buenas Prácticas
Android Superstar - Buenas PrácticasAndroid Superstar - Buenas Prácticas
Android Superstar - Buenas Prácticas
 
Plone en La Jornada
Plone en La JornadaPlone en La Jornada
Plone en La Jornada
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Struts+Spring+Hibernate MVC arquitectura

  • 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
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 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.
  • 11.
  • 12.
  • 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.
  • 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.
  • 18.
  • 19.
  • 20. Los Mapeos Hibernate JLPP Acceso a Datos: Hibernate
  • 21.
  • 22.
  • 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.
  • 30.
  • 31.
  • 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.
  • 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.
  • 37.
  • 38.
  • 40.
  • 41.
  • 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.