desarrollo de aplicacionesdesarrollo de aplicaciones java...
TRANSCRIPT
![Page 1: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/1.jpg)
Desarrollo de aplicacionesDesarrollo de aplicaciones Java EE con Struts 2, Spring yJava EE con Struts 2, Spring y
EJB 3.0EJB 3.0
© 2007, Grupo Salenda, S.L.
![Page 2: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/2.jpg)
¿Qué es J2EE?¿Qué es J2EE?
j d ifi i á i• Conjunto de especificaciones y prácticas que permiten desarrollar, desplegar y q p p g ygestionar aplicaciones multicapa” – SunMicrosystems.Microsystems.
• Lógica dividida en componentes.
• Componentes divididos en capas.
2
![Page 3: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/3.jpg)
Componentes J2EEComponentes J2EE
C t ft t t id• Componentes software autocontenidos.• Ensamblados en una aplicación J2EE, con sus
l fi h l i dclases y ficheros relacionados.• Tipos de componentes:p p
– Clientes de la aplicación y applets – se ejecutan en el cliente.
– Componentes web (JSP & Servlet) – se ejecutan en el servidor.
d i ( ) j l– Componentes de negocio (EJB) – se ejecutan en el servidor.
3
![Page 4: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/4.jpg)
Clientes J2EEClientes J2EE
• Clientes web (aka “Clientes ligeros”)• Clientes web (aka Clientes ligeros ).– Páginas web dinámicas – generadas por
componentes web de la capa Webcomponentes web de la capa Web.– Navegador web – renderiza las páginas recibidas del
servidor.• Aplicaciones cliente (aka “Clientes
pesados”).– Interfaz de usuario (Swing / AWT / SWT).– Se ejecutan en el PC del cliente.
A d di t t l t d– Acceden directamente a los componentes de negocio
4
![Page 5: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/5.jpg)
Capas de J2EECapas de J2EE
5
![Page 6: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/6.jpg)
Contenedores J2EEContenedores J2EE
I t f t t l• Interfaz entre un componente y la funcionalidad de bajo nivel de la
l t f t tplataforma que soporta ese componente.• Tipos:p
– Servidor J2EE – proporciona contenedores web y EJB.J
– Contenedor de EJB’s – gestiona la ejecución de EJB’s.J
– Contenedor web – gestiona la ejecución de JSP’sy Serlvets.y
6
![Page 7: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/7.jpg)
Contenedores J2EEContenedores J2EE
7
![Page 8: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/8.jpg)
EmpaquetadoEmpaquetado
• Módulo uno o más componentes J2EE para el• Módulo: uno o más componentes J2EE para el mismo tipo de contenedor + descriptor.
• Descriptor de despliegue (DD): documento XMLDescriptor de despliegue (DD): documento XML que describe las propiedades de despliegue de un módulo.i d ód l• Tipos de módulos:– EJB’s: .jar
Web war– Web: .war– Resource Adapter: .rar– Cliente de la aplicación: .jarCliente de la aplicación: .jar
• Un fichero EAR contiene una aplicación J2EE, que puede estar compuesta por uno o varios módulos
8
![Page 9: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/9.jpg)
Servidores de aplicacionesServidores de aplicaciones
• Software que ayuda al desarrollo despliegue• Software que ayuda al desarrollo, despliegue y control de aplicaciones empresariales (distribuidas)(distribuidas).
• Sirven como contenedores de los componentes de una aplicación J2EEcomponentes de una aplicación J2EE
• Provee middleware para acceso a servicios subyacentesy– Seguridad– Persistencia– Acceso a datos– …
9
![Page 10: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/10.jpg)
Arquitectura de un servidor de aplicaciones
10
![Page 11: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/11.jpg)
Contenedores de aplicacionesContenedores de aplicaciones
E i t h id d li i• Existen muchos servidores de aplicaciones– Comerciales
• WebSphere (IBM)
• WebLogic (BEA Systems)
• Oracle AS (Oracle Corp)
– Libres• JBboss (JBoss Inc)
• Tomcat (Apache Foundation)
• Jonas (ObjectWeb)Jonas (ObjectWeb)
• Comparativa de servidores de aplicacioneshttp://en wikipedia org/wiki/Matrix of Application Servers#Java– http://en.wikipedia.org/wiki/Matrix_of_Application_Servers#Java
11
![Page 12: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/12.jpg)
Servidores de aplicacionesServidores de aplicaciones
d l i l f• Todos los comerciales ofrecen– Contenedores de jsp’s y servletsj p y
– Contenedores de EJB’s
Funcionalidades añadidas (dependiendo del– Funcionalidades añadidas (dependiendo del vendedor)
E i t t id d li i• Existen otros servidores de aplicaciones que solo ofrecen contenedor de jsp’s y servlets (tomcat)
12
![Page 13: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/13.jpg)
ServletsServlets
E ti d l f i lid d d id• Extienden la funcionalidad de un servidorweb
j bl d• Componentes ejecutables en un contenedorweb
• Encargados de escuchar a las peticiones de un cliente
• Encargados de responder a las peticiones de un cliente
• Mejor rendimiento que CGI : uso de threads
13
![Page 14: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/14.jpg)
JSPJSP
i l i d i• Separacion entre logica de negocio y presentacionp
• Facil mantenimiento
B d l t l i d l t• Basado en la tecnologia de servlets
• Orientado a la logica de presentaciong p
14
![Page 15: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/15.jpg)
Servlets en el servidor webServlets en el servidor web
i d d li d id• Diagrama de despliegue de un servidor web con un contenedor web:
15
![Page 16: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/16.jpg)
Ejecución de los servletsEjecución de los servlets
i ió• Para una petición:
• Para ‘n’ peticionesPara n peticiones
16
![Page 17: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/17.jpg)
Ventajas y desventajas de los Servlets
V t j• Ventajas:– Prestaciones (los threads son más rápidos y ligeros
que los procesos)que los procesos) – Escalable
El l j J i t d bj t b t– El lenguaje Java es orientado a objetos y robusto.– El lenguaje Java es multiplataforma
D t j• Desventajas:– ¿Cómo separar la lógica de negocio y la
t ió ?presentación?– Cuestiones de concurrencia
17
![Page 18: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/18.jpg)
Tecnología JavaServer Pages (JSP)Tecnología JavaServer Pages (JSP)
L l till d ódi á i HTML táti• Las plantillas de código son como páginas HTML estáticas, pero con código Java embebido para permitir la generación dinámica de datos y HTML.
• Ejemplo:<table border="1" cellspacing="0" cellpadding=’5’>p g p g
<tr><th>number</th><th>squared</th></tr><% for ( int i=0; i<10; i++ ) { %>
<tr><td><%= i %></td><td><%= (i * i) %></td></tr>( )
<% } %></table>
18
![Page 19: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/19.jpg)
Ventajas y desventajas de las JSPVentajas y desventajas de las JSP
j• Ventajas:– Todas las ventajas que tienen los servlets: Altas j q
prestaciones, escalabilidad, independencia de plataforma, etc.p ,
• Desventajas:Si ól l á i JSP l ódi d– Si sólo se emplean páginas JSP, el código de script que realiza la lógica de negocio puede llegar a ser demasiado grande conf sollegar a ser demasiado grande y confuso, haciendo difícil su depuración
19
![Page 20: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/20.jpg)
Diagrama de secuencia de una petición GET
20
![Page 21: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/21.jpg)
ResumenResumen
• Puedes usar un componente de la vista para presentar datos• Puedes usar un componente de la vista para presentar datos, mostrar un formulario, mensajes de información y demás.
• El protocolo HTTP proporciona un mecanismo para solicitar vistas tanto estáticas como dinámicasvistas tanto estáticas como dinámicas
• El contenedor web intercepta las peticiones HTTP y activa el servlet que sea necesario
d d ll l l i l l• Se puede desarrollas una clase servlet que implemente el método doGet para procesar una petición
• Se puede acceder a la información de la petición del d l b l
p pinputstream a través del objeto request provisto por el contenedor.
• Se puede generar una vista escribiendo directamente en el p goutputstream del objeto request provisto por el contenedor
21
![Page 22: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/22.jpg)
Integración de Servlets y JSPIntegración de Servlets y JSPEl Patrón MVCEl Patrón MVC
El patrón MVCEl patrón MVC
© 2007, Grupo Salenda, S.L.
![Page 23: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/23.jpg)
¿Porqué combinar Servlets y JSP?¿Porqué combinar Servlets y JSP?
i í i f ili l• Escenario típico: usar JSP para facilitar el desarrollo y mantenimiento del contenido yHTML– Para código dinámico simple invocar códigoPara código dinámico simple, invocar código
servlet desde elementos de script.
Para aplicaciones un poco más complejas usar– Para aplicaciones un poco más complejas, usar clases propias invocadas desde elementos de scriptscript.
23
![Page 24: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/24.jpg)
¿Porqué combinar Servlets y JSP?¿Porqué combinar Servlets y JSP?
fi i• Pero eso no es suficiente– Para procesamiento complejo, empezar con JSP p p j , p J
es una mala aproximación
– A pesar de la facilidad de separar el código realA pesar de la facilidad de separar el código real en clases separadas, beans y custom tags, asumir que una JSP es una sola páginaasumir que una JSP es una sola página
24
![Page 25: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/25.jpg)
Posibilidades para manejar una sola petición
i i d• Arquitectura MVC. Necesaria cuando:– Una sola petición puede derivar en múltiples p p p
resultados diferentes.
– Existe un gran equipo de desarrollo conExiste un gran equipo de desarrollo con funciones bien separadas.
Se realiza un procesamiento complicado de los– Se realiza un procesamiento complicado de los datos.
25
![Page 26: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/26.jpg)
Patrón MVCPatrón MVC
Modelo
C t l dVi t ControladorVista
![Page 27: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/27.jpg)
¿Qué es Apache Struts?¿Qué es Apache Struts?
f k• ¿Un framework MVC?– Struts provee un framework unificado para el p p
despliegue de aplicaciones web que usan la arquitectura MVC.q
• ¿Una colección de utilidades?St t i d l d tilid d– Stuts provee una serie de clases de utilidades para manejar las tareas comunes del desarrollo de aplicaciones ebde aplicaciones web
27
![Page 28: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/28.jpg)
¿Qué es Apache Struts?¿Qué es Apache Struts?
j d lib í d i• ¿Un conjunto de librerías de etiquetas personalizadas ?p– Struts provee librerías de etiquetas
personalizadas para mostrar propiedades depersonalizadas para mostrar propiedades de beans, generar formularios HTML …
28
![Page 29: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/29.jpg)
Ventajas de StrutsVentajas de Struts
fi ió b d hi• Configuración basada en archivos centralizados:– Archivos XML.
• Form beans• Form beans.
• Bean tags:– Tags de acceso a las propiedades de los beans.
• HTML tags:• HTML tags:– Asocia formularios HTML con beans.
29
![Page 30: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/30.jpg)
Ventajas de StrutsVentajas de Struts
lid ió d f l i• Validación de formularios.
• Aproximación consistente con el patrón MVCMVC.
30
![Page 31: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/31.jpg)
Desventajas de StrutsDesventajas de Struts
d di j• Mayor curva de aprendizaje
• Peor documentación:Peor documentación:– Comparada con la documentación standard de
servlets y JSP’sservlets y JSP s.
• Menor transparencia:– El framework añade mayor complejidad
• Aproximación rígida:Aproximación rígida:– Con Struts es muy difícil usar algo distinto a MVC.
31
![Page 32: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/32.jpg)
Control de flujo de StrutsControl de flujo de Struts
JSP
FormDetermina
r AcciónAction Elegir JSP
r Acción
JSP
32
![Page 33: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/33.jpg)
Ejemplo: Action javaEjemplo: Action.java
• package es.salenda.action;
• import com.opensymphony.xwork2.ActionSupport;
• public class Action extends ActionSupport {
• private String mensaje;
• public String execute() throws Exception {//if(condicionDeSalida) return “failure”;//if(condicionDeSalida) return failure ;
• setMensaje(mensaje);• return SUCCESS;• }
public void setMensaje(String mensaje) {• public void setMensaje(String mensaje) {• this.mensaje = mensaje;• }
• public String getMensaje() {• return mensaje;• }• }
33
![Page 34: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/34.jpg)
Ejemplo: struts xmlEjemplo: struts.xml
• <!DOCTYPE struts PUBLIC
" //Apache Software Foundation//DTD Struts Configuration 2 0//EN"• "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
• "http://struts.apache.org/dtds/struts-2.0.dtd">
• <struts><!-- Configuration for the default package. -->
• <package name=“es.salenda.action" extends="struts-default">
• <action name="accion" class=“es.salendaaction.Action">
• <result>/index.jsp</result>
• </action>
• </package>/package
• </struts>
34
![Page 35: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/35.jpg)
Ejemplo web xmlEjemplo web.xml• <?xml version="1 0"?>?xml version 1.0 ?• <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"• "http://java.sun.com/dtd/web-app_2_3.dtd">
• <web-app>• <display-name>My Application</display-name>• <filter>• <filter-name>struts2</filter-name>• <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
/filter• </filter>
• <filter-mapping>• <filter-name>struts2</filter-name>• <url-pattern>/*</url-pattern><url pattern>/ </url pattern>• </filter-mapping>•• <welcome-file-list>• <welcome-file>inicio.jsp</welcome-file> • </welcome-file-list>•• </web-app>
35
![Page 36: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/36.jpg)
Ejemplo: inicio jspEjemplo: inicio.jsp
• <%@ taglib prefix="s" uri="/struts tags" %>• <%@ taglib prefix= s uri= /struts-tags %>• <html>• <head>• <title>Inicio</title>• </head>• <body>• <body>• <s:form action="accion"> • <s:textfield label=“Echo server" name=“mensaje"/>
• <s:submit/>• </s:form>/s:form• </body>• </html>
36
![Page 37: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/37.jpg)
Ejemplo: index jspEjemplo: index.jsp
• <%@ taglib prefix="s" uri="/struts tags" %>• <%@ taglib prefix="s" uri="/struts-tags" %>
• <html>• <html>• <head>• <title>Echo Server</title>title Echo Server /title• </head>• <body>y• Echo server reply:• <h2><s:property value=“mensaje" /></h2>• </body>• </html>
37
![Page 38: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/38.jpg)
Spring Framework
IoCIoC
© 2007, Grupo Salenda, S.L.
![Page 39: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/39.jpg)
¿Por qué un contenedor ligero?¿Por qué un contenedor ligero?
f i bi• J2EE funciona bien pero …– Es una arquitectura pesada con muchas q p
restricciones
– A menudo es “demasiado” para desarrollarA menudo es demasiado para desarrollar aplicaciones simples
Es complicado el “test driven development”– Es complicado el test driven development
39
![Page 40: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/40.jpg)
Inversión de ControlInversión de Control
• Inversión de control a k a Injección de• Inversión de control a.k.a. Injección de dependencias
• El patrón en el núcleo de Spring• El patrón en el núcleo de Spring– Hace que el código sea más fácil de probar.– Organiza los objetos de la capa intermedia (con o– Organiza los objetos de la capa intermedia (con o
sin EJB’s).– Con Spring te centras sólo en las propiedades de los p g p p
JavaBeans.– Diseñado para que existan las menores
dependencias posibles (casi todos los objetos dedependencias posibles (casi todos los objetos de negocio NO dependen del framework).
40
![Page 41: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/41.jpg)
Inversión de ControlInversión de Control
P d f k i t t l– Provee de un framework consistente para el acceso a datos (JDBC o O/R mapping).
– Posibilita la construcción de la aplicación usando POJO’s.
41
![Page 42: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/42.jpg)
Diseño de sistemas sosteniblesDiseño de sistemas sostenibles
l l l ió d• El punto clave es la gestión de dependencias.p
• Diseño por “contrato”:Define el comportamiento no la– Define el comportamiento, no la implementación.
ib i f / l l i– Se escribe una interfaz/clase para solucionar cada problema.
– Fácil construir test’s para comprobar la funcionalidad de cada implementación dada.
42
![Page 43: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/43.jpg)
Diseño de sistemas sosteniblesDiseño de sistemas sostenibles
d i “ ”• Dependencia: “atar” un componente a otro mediante:– Herencia.
– Composición– Composición.
– Instanciación.
d d– Signatura de métodos.
– Uso de métodos estáticos o atributos
43
![Page 44: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/44.jpg)
Diseño de sistemas sosteniblesDiseño de sistemas sostenibles
L d d i i li bi l• La dependencia implica un cambio en el componente dependiente cuando el
t d l d d f l úcomponente del que depende sufre algún cambio.
• No es necesariamente mala (es inevitable); el objetivo es:); j– Minimizar el número de dependencias en el
diseño.– Depender únicamente de interfaces.
44
![Page 45: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/45.jpg)
Cómo funcionaCómo funciona
fi• Defines:– Interfaces e implementaciones.p
– Dependencias entre las clases/interfaces.
• El contenedor de IoC• El contenedor de IoC:– Construye al dependiente y al proveedor; inyecta
al proveedor dentro del dependiente.
– Te da la posibilidad de elegir el tipo de injecciónp g p j(por configuración, código o automáticamente –autowiring-)g )
45
![Page 46: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/46.jpg)
Cómo funcionaCómo funciona
U d POJOS l i l t i• Uso de POJOS para las implementaciones.• No hay necesidad de desplegar en un y p g
contenedor pesado.• Mejora la “testabilidad”.Mejora la testabilidad .• No es intrusivo:
N d d d i API ífi d l– No dependes de ninguna API específica del contenedor.N h i t f i l t i l d– No hay interfaces que implementar, ni clases de las que heredar, salvo las propias.
46
![Page 47: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/47.jpg)
“El principio de Hollywood”El principio de Hollywood
N ll t ll– No me llames, que ya te llamo yo.
• Sin IoC:– El componente tiene el control sobre sus
dependencias, con lo que tiene que i lconseguirlas.
• Con IoC:– Los componentes de negocio no tienen control
sobre sus dependencias.p– El contenedor será el encargado de
inyectárselas.y
47
![Page 48: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/48.jpg)
EjemploEjemplo
class MyMain {public static void main(String[] args) {//initialize the IoC container (here it's Spring):
XmlBeanFactory xmlBeanFactory =new XmlBeanFactory(new ClassPathResource(“beans.xml”));y( ( ));
//retrieve MyLogic:MyLogic myLogic = (MyLogic) xmlBeanFactory.getBean(“myLogic”);//call the method:myLogic.doYourThing();
}}}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans ...><! this is beans xml ><!-- this is beans.xml --><beans>
<bean id=”theBusinessSvc” class=”foo.BusinessServiceMock” /><bean id=”myLogic” class=”foo.MyLogic”>
<property name=”businessService”>b f ” h ” /<bean ref=”theBusinessSvc” />
</property></bean>
</beans>
48
![Page 49: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/49.jpg)
Integración con StrutsIntegración con Struts
Package packt;
import com.opensymphony.xwork2.ActionSupport;
public class Action extends ActionSupport {p pp {
private servicios.MiBean mB;
public Action(servicios.MiBean bean) {mB = bean;mB = bean;
}
public String execute() throws Exception {//Lógica ….
return SUCCESS;}
49
![Page 50: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/50.jpg)
Integración con StrutsIntegración con Struts
?xml version "1 0" encoding "UTF 8"?<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans ...><!-- this is beans.xml --><beans><beans>
<bean id=”claseAction” scope=“prototype”class=”packt.ActionClass”><constructor-arg ref=“miBean”/><constructor arg ref= miBean />
</bean><bean id=”miBean” class=”servicios.MiBean”>
<property name=”codigo” value=“765123”/>property name codigo value 765123 /</bean>
</beans>
50
![Page 51: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/51.jpg)
EJB 3.0
© 2007, Grupo Salenda, S.L.
![Page 52: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/52.jpg)
¿Qué son los EJB’s?¿Qué son los EJB s?
l í d ll• Es una tecnología para desarrollar aplicaciones multicapa.p p
• Un estándar implementador por muchos proveedores de contenedoresproveedores de contenedores.
• Componentes distribuidos de negocio y acceso a datos.
• Existen varios tiposExisten varios tipos
52
![Page 53: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/53.jpg)
Tipos de EJBTipos de EJB
i• Entity Beans:– Usados para mapear tablas de la BBDD a clases p p
(O/R mapping).
– En lugar de trabajar con “resultados de querys”En lugar de trabajar con resultados de querys , trabajas con objetos Java.
El servidor de aplicaciones provee de la– El servidor de aplicaciones provee de la funcionalidad para cardar, actualizar o borrar los valores de una clase de la BBDDvalores de una clase de la BBDD.
53
![Page 54: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/54.jpg)
Tipos de EJBTipos de EJB
d ió• Beans de sesión:– Usados para implementar funcionalidad de la p p
aplicación.
– Hay dos tipos:Hay dos tipos:• Con estado.
• Sin estado• Sin estado.
54
![Page 55: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/55.jpg)
Tipos de EJBTipos de EJB
d ió d• Beans de sesión con estado:– El contenedor se encargar de mantener el g
estado del objeto a lo largo de la sesión del usuario. (p.e. un carro de la compra).(p p )
• Beans de sesión sin estado:E t i l d id t– Es un componente con un ciclo de vida corto, no alcanza más allá de cada conexión del cliente. (p e implementar lógica para mandar n mail)(p.e. implementar lógica para mandar un mail).
55
![Page 56: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/56.jpg)
Tipos de EJBTipos de EJB
i• Message Driven Beans:– Representan un servicio sin estado de invocación p
asíncrona.
56
![Page 57: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/57.jpg)
EJB’sEJB s
i l i l• Proporcionan la arquitectura para el desarrollo de aplicaciones distribuidas pbasadas en componentes.
• Proporcionan portabilidad entre diferentes• Proporcionan portabilidad entre diferentes plataformas y protocolos de comunicación.
• El contenedor se encarga de detalles tales como seguridad, transaccionabilidad, g , ,gestión de su ciclo de vida …
57
![Page 58: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/58.jpg)
Beneficios de los EJB’sBeneficios de los EJB s
i lifi l d ll d li i• Simplifican el desarrollo de aplicaciones distribuidas de gran envergadura.g g– El contenedor le provee de servicios de bajo
nivel.nivel.
– La lógica de negocio se encuentra en los beans, y no en el cliente => clientes más ligerosy no en el cliente => clientes más ligeros.
– Son portables y reusables.
58
![Page 59: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/59.jpg)
¿Cuándo usar EJB’s?¿Cuándo usar EJB s?
C d• Cuando …– La aplicación debe de ser escalable
• Pueden ser distribuidos en varias máquinas y su localización seguirá siendo transparente para los clientesclientes.
– Se debe primar la integridad de los datos• Los EJB’s soportan transacciones con este fin Pueden• Los EJB s soportan transacciones con este fin. Pueden
acceder de forma concurrente a objetos compartidos.
– La aplicación tendrá varios clientesLa aplicación tendrá varios clientes• Clientes remotos Java, en otros lenguajes,
navegadores web …
59
![Page 60: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/60.jpg)
EJB’s de entidadEJB s de entidad
l ’ d id d• Nos centraremos en los EJB’s de entidad.– Representan un objeto de negocio en un sistema p j g
de almacenamiento persistente.
• Persistencia:• Persistencia:– El EJB’s existe más allá de la vida de la
li ióaplicación.
– Puede ser gestionada por el bean o por el dcontenedor.
60
![Page 61: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/61.jpg)
EJB’s de entidadEJB s de entidad
id• Acceso compartido:– Como los Beans de entidad pueden ser p
accedidos por múltiples clientes al mismo tiempo es imprescindible que realicen su trabajo p p q jdentro de transacciones.
• Clave primaria:• Clave primaria:– Cada bean de entidad debe de tener un único (y
ní oco) identificadorunívoco) identificador.
61
![Page 62: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/62.jpg)
EJB’s de entidadEJB s de entidad
l i• Relaciones:– Al igual que una tabla en el modelo relacional, g q ,
un EJB de entidad puede tener relaciones con otros (1:1, 1:n, n:m).( , , )
• Persistencia manejada por el contenedor:El t d j t d l l BBDD– El contendor maneja todo el acceso a la BBDD.
– El EJB no contiene SQL, luego no está atado a d lningún mecanismo de almacenamiento en
concreto.
62
![Page 63: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/63.jpg)
EJB’s de entidadEJB s de entidad
D bid t l EJB’ t bl t– Debido a esto, los EJB’s son portables entre distintas plataformas/contenedores/bbdd’s.
– Se debe de proveer del “Abstract Schema”
63
![Page 64: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/64.jpg)
EJB’s de entidadEJB s de entidad
i• Campos persistentes:– Todos los campos persistentes son almacenados p p
en la BBDD subyacente.
– El contenedor de EJB se encarga de que SIEMPREEl contenedor de EJB se encarga de que SIEMPRE estén sincronizados.
Normalmente cada Entity se aloja en una tabla– Normalmente cada Entity se aloja en una tabla, y cada campo en una columna.
64
![Page 65: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/65.jpg)
EJB’s de entidadEJB s de entidad
l i l• Campos relacionales– Un campo relacional es una clave ajena en la p j
base de datos.
65
![Page 66: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/66.jpg)
Ejemplo de EJBEjemplo de EJB@Entity@Table(name = "PURCHASE_ORDER")public class Order implements java.io.Serializable{private int id;private double total;private Collection<LineItem> lineItems;private Collection LineItem lineItems;
@Id @GeneratedValue(strategy=GenerationType.AUTO)public int getId(){return id;}}
public void setId(int id){this.id = id;}
public double getTotal(){return total;}
public void setTotal(double total){this.total = total;}
66
![Page 67: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/67.jpg)
Ejemplo de EJBEjemplo de EJBpublic void addPurchase(String product, int quantity, double price){if (lineItems == null) lineItems = new ArrayList<LineItem>();LineItem item = new LineItem();item.setOrder(this);item.setProduct(product);item.setQuantity(quantity);item setSubtotal(quantity * price);item.setSubtotal(quantity price);lineItems.add(item);total += quantity * price;}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="order")bli C ll ti Li It tLi It ()public Collection<LineItem> getLineItems()
{return lineItems;}
public void setLineItems(Collection<LineItem> lineItems)p ( ){this.lineItems = lineItems;}}
67
![Page 68: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/68.jpg)
Ejemplo de EJBEjemplo de EJB@Entitypublic class LineItem implements java.io.Serializable{{
private int id;private double subtotal;private int quantity;private String product;private Order order;
@Id @GeneratedValue(strategy=GenerationType.AUTO)public int getId() {
return id;}}
public void setId(int id) {this.id = id;
}
public double getSubtotal() {public double getSubtotal() {return subtotal;
}public void setSubtotal(double subtotal) {
this.subtotal = subtotal;}public int getQuantity(){
return quantity;}
68
![Page 69: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/69.jpg)
Ejemplo de EJBEjemplo de EJBpublic void setQuantity(int quantity) {
this.quantity = quantity;q y q y;}
public String getProduct() {return product;
}}
public void setProduct(String product) {this.product = product;
}
@ManyToOne@JoinColumn(name = "order_id")public Order getOrder() {
return order;;}
public void setOrder(Order order) {this.order = order;
}}}
69
![Page 70: Desarrollo de aplicacionesDesarrollo de aplicaciones Java ...ftp.gul.es/pub/gul/cursos/2007/marzo/JavaEE-Struts2-Spring-EJB3/... · • Escenariíi fili lio típico: usar JSP para](https://reader031.vdocuments.pub/reader031/viewer/2022021418/5a9d1a8a7f8b9a032a8b5e60/html5/thumbnails/70.jpg)
RecursosRecursos
h //j• http://java.sun.com
• http://springframework.orghttp://springframework.org
• http://struts.apache.org
70