sesion 5. desarrollo de componentes de negocio...
TRANSCRIPT
![Page 1: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/1.jpg)
Desarrollo de Componentes deNegocio con TecnologíaEnterprise JavaBeans™ (EJB)
![Page 2: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/2.jpg)
Contenidos
![Page 3: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/3.jpg)
Elementos de JEE� Un conjunto de especificaciones
� Principales � Java EE 5 � JSR 220 (web services)
� Secundarias:� Tecnologías de servicios web� Tecnologías de aplicaciones web� Tecnologías de aplicaciones de empresa� Tecnologías de administración y seguridad
� Kit de desarrollo de software Java EE 5 (Java EE 5 SDK)
� Herramientas y servidores de aplicaciones Java EE comerciales y de código abierto
� Componentes y aplicaciones Java EE
Introducción a Java Platform Enterprise Edition
![Page 4: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/4.jpg)
Especificaciones JEE
Introducción a Java Platform Enterprise Edition
![Page 5: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/5.jpg)
Especificaciones JEE
Introducción a Java Platform Enterprise Edition
![Page 6: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/6.jpg)
Arquitectura de contenedor de componentes
Introducción a Java Platform Enterprise Edition
![Page 7: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/7.jpg)
Implementación de la arquitectura
Introducción a Java Platform Enterprise Edition
![Page 8: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/8.jpg)
Contenedores JEE
Introducción a Java Platform Enterprise Edition
![Page 9: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/9.jpg)
Tipos de componentes JEE
Introducción a Java Platform Enterprise Edition
![Page 10: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/10.jpg)
Servicios Java EE: categorías
� De implementación:� Persistencia� Transacciones� Seguridad
� API:� Asignación de nombres� Mensajería� Conectores
� Inherentes:� Ciclo de vida� Subprocesos (threading)� Comunicación con
objetos remotos, como RMI y CORBA
� Del fabricante:� Capacidad de ampliación� Fail over� Balanceo de cargaConfigurados en XML
o con annotations Usados desde código
Introducción a Java Platform Enterprise Edition
![Page 11: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/11.jpg)
Servicios de contenedor
Introducción a Java Platform Enterprise Edition
![Page 12: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/12.jpg)
Roles en JEE
Introducción a Java Platform Enterprise Edition
![Page 13: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/13.jpg)
Proceso de creación de aplicaciones EJB
Introducción a Java Platform Enterprise Edition
![Page 14: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/14.jpg)
Comparación del desarrollo con Java EE y tradicional
Introducción a Java Platform Enterprise Edition
![Page 15: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/15.jpg)
Contenidos
![Page 16: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/16.jpg)
Casos de uso
Introducción a la aplicación de subasta
![Page 17: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/17.jpg)
Modelo del dominio
Introducción a la aplicación de subasta
![Page 18: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/18.jpg)
Objetos del dominio (Auction)
Introducción a la aplicación de subasta
![Page 19: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/19.jpg)
Objetos del dominio (AuctionUser)
Introducción a la aplicación de subasta
![Page 20: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/20.jpg)
Objetos del dominio (Bid)
Introducción a la aplicación de subasta
![Page 21: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/21.jpg)
Objetos del dominio (Item)
Introducción a la aplicación de subasta
![Page 22: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/22.jpg)
Objetos del dominio (BookItem)
Introducción a la aplicación de subasta
![Page 23: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/23.jpg)
Arquitectura de la implementación
Introducción a la aplicación de subasta
Ejecutar Auction v.1
![Page 24: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/24.jpg)
Contenidos
![Page 25: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/25.jpg)
Comparación de beans de sesióncon y sin datos de estado
� La mayoría de aplicaciones Java EE que utilizan interfaces de usuario necesitan que se mantengan los datos de estado
� ¿Dónde mantenerlo?� Capa de usuario� Capa Web � HttpSession� Capa de base de datos� Capa de negocio � beans de sesión con estado
Implementación de los beans de sesión EJB3.0
![Page 26: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/26.jpg)
Mantenimiento del estado
� Capa de usuario (programa cliente)� Trasiego de datos
� Capa Web� En HttpSession
� Capa de negocio (EJB)� En EJBs con estado
� Capa de base de datos
� Carrito de la compra� Datos en varias páginas
Implementación de los beans de sesión EJB3.0
![Page 27: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/27.jpg)
Beans sinsin estado
� El bean no retiene información del cliente.� Entre invocaciones es posible que un cliente no obtenga la misma instancia de bean de sesión.
� Una misma instancia de bean de sesión puede manejar cualquier número de solicitudes de cliente. � Mejora de rendimiento.
Implementación de los beans de sesión EJB3.0
![Page 28: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/28.jpg)
Beans sin estado
� Cuidado con los atributos de instancia
Implementación de los beans de sesión EJB3.0
![Page 29: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/29.jpg)
Características de los beans de sesión concon datos de estado� El bean pertenece a un cliente concreto durante una conversación o sesión completa.
� La conexión del cliente existe hasta que el cliente elimina el bean o la sesión expira. � El tiempo de espera del bean de sesión suele depender del intervalo de inactividad establecido por el proveedor.
� El contenedor mantiene una instancia EJB separada para cada cliente. � Los beans de sesión con datos de estado requieren más memoria por cliente que los beansde sesión sin datos de estado.
![Page 30: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/30.jpg)
Beans con estado
Implementación de los beans de sesión EJB3.0
![Page 31: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/31.jpg)
Declaración de interfaz de negocio para bean de sesión
� Declarar interfaz de negocio
� Declarar las partes remotas y locales
Implementación de los beans de sesión EJB3.0
![Page 32: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/32.jpg)
Interfaces locales y remotas
La implementación se puede anotar con @Remote pero no con @Local y @Remote a la vez
Un implementación puede serremota y local pero las anotaciones van en cada interfaz
Implementación de los beans de sesión EJB3.0
![Page 33: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/33.jpg)
Creación de bean de sesión que implementa la interfaz de negocio
Implementación de los beans de sesión EJB3.0
![Page 34: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/34.jpg)
Requisitos de la clase de implementación
� pública, no debe ser final ni abstracta� Constructor público que no acepte parámetros.� El contenedor utiliza este constructor para crear instancias de la clase de bean de sesión.
� No debe definir el método finalize.
Implementación de los beans de sesión EJB3.0
![Page 35: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/35.jpg)
Vistas de cliente locales y distribuidas
mar-10 [email protected] 35
Conexión local
Interfaz local
EJB Container
![Page 36: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/36.jpg)
Vistas de cliente locales y distribuidasmar-10 [email protected] 36
Conexión remotaInterfaz remota
EJB Container
![Page 37: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/37.jpg)
Interfaces locales y remotas� La implementación se puede anotar con @Remote
pero no con @Local y @Remote a la vez� Un implementación puede ser remota y local pero las
anotaciones van en cada interfaz
Implementación de los beans de sesión EJB3.0
Ver en Auction v.1
![Page 38: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/38.jpg)
Todas las anotaciones
� Tipo de bean� @Stateless, @Statefull
� Tipo de acceso� @Remote, @Local
� Cierre de sesión (en Statefull)� @Remove
� Acceso a recursos desde el EJB� @EJB, @Resource
� Ciclo de vida� @PostConstruct, @PreDestroy, � (Sólo statefull) @PostActivate, @PrePassivate
Implementación de los beans de sesión EJB3.0
![Page 39: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/39.jpg)
Ciclo de vida de session beanssin estado
Implementación de los beans de sesión EJB3.0
![Page 40: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/40.jpg)
Ciclo de vida de session beanscon estado
Implementación de los beans de sesión EJB3.0
![Page 41: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/41.jpg)
Definición de controladores de eventos de ciclo de vida
� Forma genérica
Implementación de los beans de sesión EJB3.0
![Page 42: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/42.jpg)
Objeto SessionContext� Proporciona acceso al EJBObject (al contenedor)� Entorno de seguridad� Información sobre el control de la transacción� Acceso a JNDI
Implementación de los beans de sesión EJB3.0
![Page 43: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/43.jpg)
Metadatos de despliegue
� En EJB 3.0: anotaciones y/o xml� Con anotaciones no es necesario el xml� Si están presentes los dos, el xml revoca las configuraciones de anotaciones
� Descriptores JEE:� Web: web.xml� EJB: ejb-jar.xml� Aplicaciones completas: application.xml
Implementación de los beans de sesión EJB3.0
![Page 44: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/44.jpg)
Ejemplo de ejb-jar.xml
Implementación de los beans de sesión EJB3.0
![Page 45: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/45.jpg)
Empaquetado
� Web: <nombre>.war� EJB: <nombre>.jar
� Archivo JAR nomal� Descriptor ejb-jar.xml en /META-INF
� Aplicaciones: <nombre>.ear� Contiene WAR + JAR� Descriptor application.xmlen /META-INF
Implementación de los beans de sesión EJB3.0
Ver en Auction v.1
![Page 46: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/46.jpg)
Posibles clientes
� Otro EJB de sesion� Un servlet (o JSP compilado)� Clase Java normal
� ¿Cómo obtener una referencia al EJB?� Depende de si el cliente se ejecuta en un contenedor o no (si es EJB/servlet o clase normal)
Implementación de los beans de sesión EJB3.0
![Page 47: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/47.jpg)
Con servicios de contenedor
� Servlet o EJB local� El contenedor inyecta la referencia
Implementación de los beans de sesión EJB3.0
![Page 48: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/48.jpg)
Con servicios de contenedor
� Servlet o EJB remoto (en otro contenedor)
� Búsqueda JNDIEn ejb-jar.xmlo web.xml
Implementación de los beans de sesión EJB3.0
![Page 49: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/49.jpg)
Sin servicios de contenedor
� Clase Java (local o remota)� Se deben usar los servicios JNDI
Implementación de los beans de sesión EJB3.0
Ver en Auction v.1
![Page 50: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/50.jpg)
Contenidos
![Page 51: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/51.jpg)
Persistencia
� Necesidad de que los datos manejados sobrevivan tras la ejecución del programa� Muchas técnicas y tecnologías (ficheros, serialización, bases de datos, etc)
� JPA: especificación de un mapeadorobjeto/relacional
JPA: conceptos básicos
![Page 52: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/52.jpg)
Asignación estática: De clases a tablas
JPA: conceptos básicos
![Page 53: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/53.jpg)
Mapeador ORM
� Diseño e implementación con OO pero persistencia en BDD relacional� Diferentes paradigmas (diferencias estructurales, dinámicas, etc.)
� Se busca tener persistencia automática y (casi) transparente� Los objetos son persistentes (en BDDR) sin apenas programación (mucho ahorro de código tedioso)
JPA: conceptos básicos
![Page 54: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/54.jpg)
Conceptos básicos� Unidad de persistencia
� Conjunto de clases de entidad administradas por el ORM� Descriptor persistence.xml
� Administrador de entidades� Controla el ciclo de vida de la entidades: salvar, borrar,
recuperar, buscar (CRUD)� Contexto de persistencia
� Estado de la entidad con respecto al administrador de entidades
� Identidad persistente� Vínculo del objeto java con el registro en la tabla� Dentro de un contexto de persistencia un objeto java es
único� No confundir con la identidad java
JPA: conceptos básicos
![Page 55: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/55.jpg)
Clases Entidad
� Representan conceptos del modelo de dominio
� Relacionadas con otros son el modelo del dominio� Conjunto de clases que representan los conceptos principales del problema (núcleo de la funcionalidad del programa)
� Otras clases de proceso (p.e: EJBs de sesión) las manipulan
JPA: conceptos básicos
![Page 56: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/56.jpg)
Clase Java como Entidad
� Deben seguir convenio Java Beans:� Setters y getters� Constructor sin parámetros� Recomendable
� Serializable� hashCode() y equals() redefinido
� Campo Identificador (clave)� Colecciones para asociaciones many
� Puede ser Set<T>, List<T>, Map<T> o Collection<T> (interfaces)
JPA: conceptos básicos
![Page 57: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/57.jpg)
![Page 58: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/58.jpg)
Modelo de dominio en código
JPA: conceptos básicos
![Page 59: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/59.jpg)
De clase a tabla
JPA: conceptos básicos
![Page 60: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/60.jpg)
Metadatos con @Anotaciones
JPA: conceptos básicos
![Page 61: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/61.jpg)
Metadatos en XML
� En fichero orm.xml� En persistence.xml
� Fichero referenciados desde persistence.xml
� XML revoca las indicaciones de @Annotations� En deploy pueden se pueden ajustar rendimientos sin tocar código fuente
mar-10 [email protected] 61
![Page 63: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/63.jpg)
Campos persistentes o propiedades
Acceso properties:se anotan los getters
Acceso field:se anotan los atributos
JPA: conceptos básicos
![Page 64: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/64.jpg)
Tipos Java persistentes
� Tipos primitivos Java� Envoltorios Java, como java.lang.Integer� java.lang.String� byte[] y Byte[]� char[] y Character[]� Los tipos serializables, incluidos, entre otros:
� java.util.Date, java.sql.TimeStamp� Cualquier otra clase del programa
JPA: conceptos básicos
![Page 65: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/65.jpg)
Archivo persistence.xml
� Define las clases que forman parte de la persistence-unit (por su presencia)
� Especifica el DataSource
JPA: conceptos básicos
![Page 66: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/66.jpg)
Ejemplo de uso EntityManagerJPA: conceptos básicos
Ver en Auction v.1
![Page 68: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/68.jpg)
APIs JPA
JPA: conceptos básicos
![Page 70: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/70.jpg)
Notificación de cambios de estado
� Especificación de métodos callback con anotaciones� @PrePersist� @PostPersist� @PreRemove� @PostRemove� @PreUpdate� @PostUpdate� @PostLoad
JPA: conceptos básicos
![Page 71: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/71.jpg)
Uso de Entity ManagerJPA: conceptos básicos
![Page 72: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/72.jpg)
JPA: conceptos básicos
![Page 73: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/73.jpg)
Uso de contexto extendidoJPA: conceptos básicos
![Page 74: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/74.jpg)
JPA: conceptos básicos
Ver en Auction v.1
![Page 75: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/75.jpg)
Estructura típica de archivo ejb-jar
JPA: conceptos básicos
Ver en Auction v.1
![Page 76: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/76.jpg)
Contenidos
![Page 80: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/80.jpg)
mar-10 [email protected] 80
Asociaciones en Java
Se podría añadir métodos para gestionar de forma cómoda la relación
Si la relación es bidireccional siempresiempre hay que establecer la relación en las dos clases
JPA: modelado de asociaciones
![Page 81: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/81.jpg)
mar-10 [email protected] 81
Multiplicidad en JPA
� one-to-one� many-to-many� one-to-many� many-to-one
� son direccionales, esta es la inversa de una one-to-many
JPA: modelado de asociaciones
![Page 82: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/82.jpg)
mar-10 [email protected] 82
Multiplicidad en JPA
� one-to-one� many-to-many� one-to-many� many-to-one
� son direccionales, esta es la inversa de una one-to-many
JPA: modelado de asociaciones
![Page 84: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/84.jpg)
mar-10 [email protected] 84
Bidireccional uno a muchos
Doble actualización
JPA: modelado de asociaciones
<
![Page 85: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/85.jpg)
mar-10 [email protected] 85
La doble actualización
� En java es necesaria pero en SQL la asociación es una foreign key. � Solo se actualiza el campo en una tabla.
� JPA vigila ambos extremos y detecta las dos modificaciones en Java
� Se producirán dos INSERT o dos UPDATE (según) cuando sólo una es necesaria
� Para evitarlo se marca un extremo conmappedBy=“campo_FK_del_otro_extremo”
![Page 86: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/86.jpg)
mar-10 [email protected] 86
Uno o uno con foreign key
mappedBy en la clase que no tiene la FK
JPA: modelado de asociaciones
![Page 87: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/87.jpg)
… a Muchos @OrderBy
mar-10 [email protected] 87
List mantiene en memoria el orden traído de BDD
pero en BDD no se mantiene el orden en el que se insertaron en List
JPA: modelado de asociaciones
![Page 90: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/90.jpg)
mar-10 Alberto M.F.A. [email protected] 90
Atributo del modo de recuperación (fetch)
� Forma de recuperar objetos de la BDD y meterlos en contexto de persistencia
� En memoria los objetos forman un grafo por sus asociaciones
� Recorrer el grafo (navegar las asociaciones) es la forma natural de los modelos Orientados a Objetos
� Pero ¿cuándo y cómo se cargan en memoria?
JPA: modelado de asociaciones
![Page 91: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/91.jpg)
Estrategia de fetch
� ¿Cuándo se suben de la BDD..� …los objetos asociados con un objeto dado?
� Dos momentos:� LAZY: se cargan en el momento que se necesiten
� EAGER: se cargan al cargar el objeto que las asocia
mar-10 Alberto M.F.A. [email protected] 91
JPA: modelado de asociaciones
![Page 92: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/92.jpg)
Fetch por defecto
JPA: modelado de asociaciones
Modificación del comportamiento por defecto
![Page 93: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/93.jpg)
Atributo del modo de cascadaJPA: modelado de asociaciones
Ver en Auction v.1
![Page 94: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/94.jpg)
Contenidos
![Page 95: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/95.jpg)
mar-10 [email protected] 95
Estrategias para mapear herencia
� JPA permite 3 � Tabla por cada clase no abstracta
� InheritanceType.TABLE_PER_CLASS
� Tabla por cada clase� InheritanceType.JOINED
� Tabla única para toda la jerarquía� InheritanceType.SINGLE_TABLE
![Page 96: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/96.jpg)
mar-10 [email protected] 96
Table per concrete class� Una tabla por cada clase no abstracta� Las propiedades heredadas se repiten en cada tabla� Problemas
� Asociaciones polimórficas (de la superclase) se hacen poniendo la FK en cada tabla
� Consultas polimórficas son menos eficientes, son varias SELECT o una UNION
� Cambios en la superclase se propagan por todas las tablas� Ventajas
� Cuando sólo se necesitan consultas contra las clases hijas� Recomendable
� Cuando no sea necesario el polimorfismo
InheritanceType.TABLE_PER_CLASS
![Page 97: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/97.jpg)
mar-10 [email protected] 97
Table per concrete classSe crea una tabla por cada clase no abstracta
abstracta
InheritanceType.TABLE_PER_CLASS
![Page 98: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/98.jpg)
Table per concrete class
mar-10 [email protected] 98
Atención: Opcional en JPA, puede que no todos los proveedores JPA la soporten
InheritanceType.TABLE_PER_CLASS
![Page 99: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/99.jpg)
mar-10 [email protected] 99
Table per class hierarchy� Todas las clases persisten en una única tabla con la
unión de todas las columnas de todas las clases� Usa un discriminador en cada fila para distinguir el
tipo� Ventajas
� Es simple y eficiente� Soporta el polimorfismo� Fácil de implementar� Fácil modificar cualquier clase
� Desventaja� Todas las columnas no comunes deben ser nullables� Pueden quedar columnas vacías
InheritanceType.SINGLE_TABLE
![Page 100: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/100.jpg)
mar-10 [email protected] 100
Table per class hierarchy (2)� Mapeo
� En la clase raiz añadir @DiscriminatorColumn� En cada clase hija añadir @DiscriminatorValue
� Recomendación� Si las clases hijas tienen pocas propiedades (se diferencian más en comportamiento) y se necesitan asociaciones polimórficas
� Debería ser tomada como estrategia por defecto
InheritanceType.SINGLE_TABLE
![Page 102: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/102.jpg)
mar-10 [email protected] 102
Table per class hierarchy (4)
@DiscriminatorColumn, @DiscriminatorValueno son necesarios, se toman valores por defecto si no están presentes
InheritanceType.SINGLE_TABLE
![Page 103: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/103.jpg)
mar-10 [email protected] 103
Table per subclass� Cada clase de la jerarquía tiene su propia tabla� Las relaciones de herencia se resuelven con FK� Cada tabla solo tiene columnas para las propiedades
no heredadas� Ventaja
� Modelo relacional completamente normalizado� Integridad se mantiene� Soporta polimorfismo� Evoluciona bien
� Desventaja� Si hay que hacer cosas a mano las consultas son mas
complicadas� Para jerarquías muy complejas el rendimiento en consultas
puede ser pobre, muchas joins
InheritanceType.JOINED
![Page 104: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/104.jpg)
mar-10 [email protected] 104
Table per subclass (2)
� Recomendación� Si las clases hijas se diferencian mucho en sus propiedades y tienen muchas
� Si se necesita polimorfismo� Cuando los nullables den problemas
InheritanceType.JOINED
![Page 107: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/107.jpg)
mar-10 [email protected] 107
Entities vs Value types(incorporable(?), embeddable)
� Una de las riquezas de los modelos OO � más clases que tablas
� Entidades son aquellas clases de las cuales los objetos son relevantes para el usuario� En JPA siempre llevan identificador y deben ajustarse a un convenio de nombres (mínimo)
![Page 108: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/108.jpg)
mar-10 [email protected] 108
Entities vs Value types� Tipos valor son aquellas clases cuya identidad no es
conocida por el usuario, ni le importa� Tienen semántica de composición o directamente aparecen
como atributos en los diagramas UML� Las clases JDK (Integer, Long, etc.) son de este tipo� Su ciclo de vida depende totalmente de la entidad a la que
están asignados� En runtime los objetos Valor sólo tienen referencias
entrantes de los objetos que los poseen y no pueden ser compartidos con otros objetos
� La diferencia entre uno y otro es difícil de definir ya que depende del contexto
![Page 109: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/109.jpg)
mar-10 [email protected] 109
Referencias
� A entidades� Se salvan como claves ajenas
� A value types� Se salvan en la misma tabla que la entidad que los posee
� Excepto si son colecciones (p.e. un usuario tiene varias direcciones) � otra tabla
� Se usa la etiqueta @Embedded
![Page 111: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/111.jpg)
Mapeos
mar-10 [email protected] 111
Si hay más de un VT del mismo tipo en una entidad hay que forzar los nombres de las columnas ya que si no se repiten en el DDL
![Page 112: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/112.jpg)
� Marca una clase como sólo ValueType� Se pueden configurar las propiedades (o atributos) con etiquetas:� @Basic, @Column, @Lob, @Temporal, @Enumerated
mar-10 [email protected] 112
@Embeddable
![Page 113: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/113.jpg)
POJO Ejemplo (Value Object)
mar-10 [email protected] 113
Tipo de acceso (field, property) igual al de la clase que lo incluye
No lleva No lleva @Id@Id
![Page 114: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/114.jpg)
Uso de claves compuestas
JPA: modelado de herencia y composición
Ver en Auction v.1
![Page 115: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/115.jpg)
Contenidos
![Page 116: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/116.jpg)
mar-10 Alberto MFA [email protected] 116
Paginación
El primer resultado es el 0Número máximo de filas a recuperar desde la fijada por setFirstResult()
Ejecuta la consulta y devuelve una List()de objetos User
Las Query permiten encadenamiento de métodos
JPA: lenguaje de consultas
![Page 117: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/117.jpg)
mar-10 Alberto MFA [email protected] 117
Enlace de parámetros
¿Qué pasa si escriben esto en un formulario?
Es el problema de la SQL injection
¿Qué hay en este string?
� Lo que no se debe hacer
JPA: lenguaje de consultas
![Page 118: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/118.jpg)
mar-10 Alberto MFA [email protected] 118
Enlace de parámetros
� Enlace nominal (recomendado)
setParameter() sobrecargado para java.util.Date, java.util.Calendar y Object (ver documentación)
JPA: lenguaje de consultas
![Page 119: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/119.jpg)
mar-10 Alberto MFA [email protected] 119
Enlace de parámetros
� Enlace posicional
setters sobrecargados
¡Ojo! Se empieza en 1
El orden de parámetros no tiene por qué ser secuencial
JPA: lenguaje de consultas
![Page 120: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/120.jpg)
mar-10 Alberto MFA [email protected] 120
Ejecución
� Se produce al invocar a:� getResultList()
� getSingleResult()Excepción si más de uno o ninguno
Así ya no… pero puede no haber ninguno
![Page 121: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/121.jpg)
mar-10 Alberto MFA [email protected] 121
Consultas con nombre
� Se carga el string de la consulta desde mapeos
� createNamedQuery(…)
� Query con anotaciones o en orm.xml
JPA: lenguaje de consultas
![Page 123: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/123.jpg)
Partes de una consulta
� Selección� Fuente de datos � FROM� Una sola o combinación de ellas
� Restricción� Filtrado de filas � WHERE
� Proyección� Selección de partes de las filas que pasan el filtro � SELECT
mar-10 Alberto MFA [email protected] 123
JPA: lenguaje de consultas
![Page 124: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/124.jpg)
Curso 2005-2006 SID2-GAP 124
Partes de una consulta
Criterios de selección de filas
TablaResultados
Puede que haya menos filas (WHERE) y puede que menos campos (SELECT)
FROM WHERE SELECT
JPA: lenguaje de consultas
![Page 125: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/125.jpg)
mar-10 Alberto MFA [email protected] 125
Selección (FROM)� SELECT en JPA QL, no necesario en HQL
� select i from Item i
� Alias necesarios para condiciones sobre miembros� select i from Item as i� select i from Item i
� Las consultas son polimórficas� select b from BillingDetail b� select o from java.lang.Object o� select s from java.io.Serializable s
¡Sube toda la BDD!
También polimorfismo sobre interfaces
JPA: lenguaje de consultas
![Page 126: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/126.jpg)
mar-10 Alberto MFA [email protected] 126
Restricción (WHERE)
� WHERE para filtrar filas
JPA: lenguaje de consultas
![Page 128: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/128.jpg)
mar-10 Alberto MFA [email protected] 128
Operadores de comparación y precedencia
+
_
JPA: lenguaje de consultas
![Page 129: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/129.jpg)
mar-10 Alberto MFA [email protected] 129
Restricciones sobre colecciones (WHERE)
� En el WHERE� Se pueden complementar con funciones
JPA: lenguaje de consultas
![Page 132: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/132.jpg)
mar-10 Alberto MFA [email protected] 132
Proyección
(Esta consulta es inútil ya que da un producto cartesiano)
Cada fila es un vector de los elementos proyectados (Item y Bid)
![Page 133: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/133.jpg)
mar-10 Alberto MFA [email protected] 133
Proyección de escalares
En la select pueden ir atributos de clases…
… y resultados de funciones (las ya vistas)
JPA: lenguaje de consultas
![Page 134: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/134.jpg)
Curso 2005-2006 SID2-GAP 134
Consulta sobre varias tablas
Tabla
Resultados
Tabla
+
Combinación de registros de las dos tablas
Criterios de filtrado de filas
JPA: lenguaje de consultas
![Page 135: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/135.jpg)
mar-10 Alberto MFA [email protected] 135
Joins: inner, left y right outer
Todos los Itemscon sus Bids
Los Items que tienen Bids
![Page 136: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/136.jpg)
mar-10 Alberto MFA [email protected] 136
Joins implícitos en asociaciones
� Cuando se accede a propiedades a lo largo de un camino (path)
Bid join ItemItem join User Acceso a propiedad
También se puede usar en select
![Page 137: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/137.jpg)
mar-10 Alberto MFA [email protected] 137
Joins implícitos
� Solo se permiten en caminos (path) que pasen a través de asociaciones many-to-one o one-to-one
� El final del camino NO puede ser multivaluado� P.e. item.bids.amount es ilegal
JPA: lenguaje de consultas
![Page 139: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/139.jpg)
mar-10 Alberto MFA [email protected] 139
Joins en FROM
� Cuando el camino de asociaciones resulta en un conjunto
one-to-many
many-to-many
![Page 140: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/140.jpg)
mar-10 Alberto MFA [email protected] 140
Joins en FROM
� También left y right join
Los Item %name% y sus Bids aunque haya Itemque no tienen Bids
JPA: lenguaje de consultas
![Page 142: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/142.jpg)
� El ajuste del join se hace en el WHERE� Es práctico para consultas sobre clases no asociadas
mar-10 Alberto MFA [email protected] 142
Theta-style en WHERE
Da pares
![Page 144: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/144.jpg)
mar-10 Alberto MFA [email protected] 144
Funciones en SELECT
count() min() max() sum() avg()
JPA: lenguaje de consultas
![Page 145: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/145.jpg)
Curso 2005-2006 SID2-GAP 145
Consulta de totales
Formación de grupos
Tabla
Resultados
+
Tabla
Cálculos sobre los grupos
Selección de grupos
Criterios de selección de filas
GROUP BY
HAVING
Funciones de agregados
JPA: lenguaje de consultas
![Page 146: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/146.jpg)
mar-10 Alberto MFA [email protected] 146
Como en SQL cualquier propiedad o alias que aparezca en SELECT fuera de una función de agregado debe aparecer también en la cláusula GROUP BY
Agrupamiento
� Cláusula GROUP BY (como en SQL)
JPA: lenguaje de consultas
![Page 147: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/147.jpg)
mar-10 Alberto MFA [email protected] 147
Restricción de grupos con HAVING
� Mismas reglas que en SQL
Solo puede aparecer en HAVING una función de agregado o una propiedad (o alias) usado en GROUP BY
JPA: lenguaje de consultas
![Page 148: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/148.jpg)
mar-10 Alberto MFA [email protected] 148
Instanciación dinámica en SELECT
� Cada fila devuelve un objeto de la clase que se especifica
� La clase debe existir y no necesita estar mapeada
Las consultas que no devuelven entidades pueden tener rendimiento al no meter resultados en contexto de persistencia
JPA: lenguaje de consultas
![Page 149: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/149.jpg)
mar-10 Alberto MFA [email protected] 149
Subselects
� En SQL una subselect puede ir en SELECT, FROM o WHERE
�� En JPA QL En JPA QL ssóólolo puede ir en el WHEREpuede ir en el WHERE� Las debe soportar la BDD
� MySQL en versiones anteriores a 4.?? no tiene subselects
JPA: lenguaje de consultas
![Page 150: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/150.jpg)
mar-10 Alberto MFA [email protected] 150
Subselects
Correlada: puede tener peor rendimiento
Siempre entre paréntesis
No correlada: no tiene impacto de rendimiento
JPA: lenguaje de consultas
![Page 151: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/151.jpg)
Contenidos
![Page 152: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/152.jpg)
Middleware orientado a mensajes (MOM)
� Permite conexiones desacopladas entre sistemas
� Facilita la integración entre sistemas de tecnologías dispares� Añaden una capa intermedia
� La interacción entre sistemas se basa en intercambio de mensajes (o eventos)
Desarrollo de aplicaciones que usan mensajes
![Page 153: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/153.jpg)
MOM como integrador
Clientes de mensajería
Distribución de mensajes
Desarrollo de aplicaciones que usan mensajes
![Page 154: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/154.jpg)
Tipos de clientes de mensajería
Se bloquea esperando la llegada de un mensaje
Desarrollo de aplicaciones que usan mensajes
![Page 155: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/155.jpg)
Arquitectura de mensajería punto a punto
� Cuando el consumidor recoge el mensaje se borra de la cola
� Puede haber múltiples consumidores, pero “el primero que llega se lo lleva”
� También pude haber múltiples productores enviando a la misma cola
Desarrollo de aplicaciones que usan mensajes
![Page 156: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/156.jpg)
Arquitectura de mensajería de publicación/suscripción
� El tema es como una lista de distribución
� El mensaje se conserva hasta que todos los suscritos lo consumen
Desarrollo de aplicaciones que usan mensajes
![Page 157: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/157.jpg)
Elementos del API JMS
Desarrollo de aplicaciones que usan mensajes
![Page 158: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/158.jpg)
Estructura de los mensajes
Desarrollo de aplicaciones que usan mensajes
![Page 159: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/159.jpg)
Diagrama de colaboración
Desarrollo de aplicaciones que usan mensajes
![Page 160: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/160.jpg)
Ejem
plo
Desarrollo de aplicaciones que usan mensajes
![Page 161: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/161.jpg)
Diagrama de colaboración
Desarrollo de aplicaciones que usan mensajes
![Page 162: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/162.jpg)
Ejem
plo
Desarrollo de aplicaciones que usan mensajes
![Page 163: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/163.jpg)
Método gestor del evento
Desarrollo de aplicaciones que usan mensajes
![Page 164: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/164.jpg)
Desarrollo de aplicaciones que usan mensajes
Ver en MessageDrivenBean
![Page 165: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/165.jpg)
EJB como clientes de mensajería
![Page 166: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/166.jpg)
Contenidos
![Page 167: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/167.jpg)
MessageDriven Beans
� Son clientes asíncronos de mensajes� Implementan el interfaz MessageListener
� Desconectados de cliente
Desarrollo de beans controlados por mensajes
![Page 168: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/168.jpg)
Ciclo de vida
Posible interceptar los cambios de estado
@PostConstruct@PreDestroy
Desarrollo de beans controlados por mensajes
![Page 169: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/169.jpg)
Código ejemplo
Desarrollo de beans controlados por mensajes
![Page 170: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/170.jpg)
Filtra los mensajes que llegan
Desarrollo de beans controlados por mensajes
Ver en MessageDrivenBean
![Page 171: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/171.jpg)
Contenidos
![Page 172: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/172.jpg)
Interceptores y clases interceptor
� Código que se añade para ejecutar funcionalidad extra (transversal) a la funcionalidad original de un bean o entidad (callbacks)� Interceptores de métodos de negocio
� De un bean de sesión o de mensajes� @AroundInvoke
� Interceptores de ciclo de vida� Notificación del cambio de estado de un beande sesión o clase entidad persistente
Implementación de clases y métodos interceptor
![Page 173: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/173.jpg)
Métodos interceptores para beans (sesión y mensaje)
� Signatura para un interceptor de método de negocio
� Signatura para un interceptor de ciclo de vida
Implementación de clases y métodos interceptor
privatepublicprotected
@PostConstruct@PreDestroy@PostActivate…
![Page 174: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/174.jpg)
API de InvocationContext
Implementación de clases y métodos interceptor
Ver en Auction v.3
![Page 175: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/175.jpg)
Conceptos
� Los métodos interceptores pueden estar en la misma clase a interceptar o en otra aparte
� Un interceptor se puede aplicar a un sólo método o a todos los de una clase
� Se pueden aplicar varios interceptores a un mismo bean (o método), la llamada pasa a través de todos ellos� Actúan como filtros
Implementación de clases y métodos interceptor
![Page 176: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/176.jpg)
Ejemplo de método interceptor (en misma clase)
Implementación de clases y métodos interceptor
![Page 177: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/177.jpg)
Ejemplo de clase interceptoraImplementación de clases y métodos interceptor
Interceptada
Interceptora
![Page 178: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/178.jpg)
Varios métodos interceptores
Implementación de clases y métodos interceptor
Método interceptor en la misma clase
Clases interceptoras
![Page 179: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/179.jpg)
Interceptores de ciclo de vida
Implementación de clases y métodos interceptor
Un mismo método puede atender varios eventos
![Page 180: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/180.jpg)
Interceptores de ciclo de vida para entidades
� Los métodos interceptores pueden estar en la misma clase entidad o en otras clases
� Eventos:
Implementación de clases y métodos interceptor
@PrePersist@PostPersist@PreRemove@PostRemove@PreUpdate@PostUpdate@PostLoad
Ver en Auction v.2
![Page 181: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/181.jpg)
Ejemplo de métodos interceptores
Implementación de clases y métodos interceptor
![Page 182: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/182.jpg)
Ejemplo de clase interceptora para entidades
Implementación de clases y métodos interceptor
![Page 183: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/183.jpg)
Contenidos
![Page 184: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/184.jpg)
Determinación del comportamiento transaccional
� Cada método de bean de sesion o mensaje actúa (o puede actuar) bajo la demarcación de una transacción
� El contenedor gestiona y coordina todos los recursos involucrados en la transacción� Transacciones locales o distribuidas� Uno o varios recursos transaccionales
Implementación de transacciones
![Page 185: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/185.jpg)
Escenarios de comportamiento transaccional
Implementación de transacciones
![Page 186: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/186.jpg)
Para cada método de bean…
Implementación de transacciones
![Page 187: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/187.jpg)
Gestión de Trx por el contenedor (CMT)
Implementación de transacciones
Por defecto las transacciones las gestiona el contenedor
Para cada método se puede especificar su papel frente a una transacción (atributo)
Requieredpor defecto
![Page 188: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/188.jpg)
Compatibilidad de atributos de Trx y tipos de bean
Implementación de transacciones
![Page 189: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/189.jpg)
Ejemplo de control de trx CMT
Implementación de transacciones
![Page 190: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/190.jpg)
Control del estado de rollbackde una trx CMT por el bean
Implementación de transacciones
Demarcación de la trx
![Page 191: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/191.jpg)
Beans de sesión con estado y comportamiento transaccional
� Hasta ahora…� el bean maneja el estado de recursos transaccionales, p.e. BDD; pero …
� Si el bean es con estado…� Él mismo puede ser transaccional� Los cambios en sus atributos de estado son también transacionales
� Debe implementar el interfaz SessionSynchronization para ser coordinado en la transacción
Implementación de transacciones
![Page 192: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/192.jpg)
Implementación de transacciones
![Page 193: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/193.jpg)
Gestión de transacción por el bean (BMT)(por programa)
� El bean gestiona por programa el estado de la transacción
� Se debe usar la interfaz UserTransaction (API JTA)
Implementación de transacciones
![Page 194: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/194.jpg)
Control de trx BMT
Implementación de transacciones
![Page 195: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/195.jpg)
Implementación de transacciones
Ejemplo BMT control de trx
![Page 196: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/196.jpg)
Transacciones en beans de mensajes
� Entre el emisor y el receptor está el sistema de gestión de mensajes
� El MOM actúa de intermediario y rompe la cadena emisión/recepción en dos transacciones� 1ª trx. El emisor envía a la cola.
� Commit confirma la recepción del mensaje por la cola
� 2ª trx. El receptor consume el mensaje� Commit elimina el mensaje de la cola
Implementación de transacciones
![Page 197: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/197.jpg)
Opciones de control de trx en beans de mensajes
Implementación de transacciones
![Page 198: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/198.jpg)
Mensaje envenenado
Implementación de transacciones
![Page 199: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/199.jpg)
Contenidos
![Page 200: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/200.jpg)
Fuentes de excepciones
Manejo de excepciones
![Page 201: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/201.jpg)
Tipos de excepciones Java
� Chequeadas, heredan de Exception� Indican errores lógicos en la aplicación
� NO chequeadas, heredan de RuntimeException� Indican errores de programación o no recuperables
� En JEE de suele hablar de:� Excepciones de aplicación� Excepciones de sistema
Manejo de excepciones
![Page 202: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/202.jpg)
Excepciones de aplicación y sistema
Manejo de excepciones
![Page 203: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/203.jpg)
Ruta de retorno de excepciones
Manejo de excepciones
![Page 204: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/204.jpg)
Análisis del manejo de excepciones por el contenedor� Tipo de excepción
� Aplicación o sistema
� Contexto transacción� Iniciado por el emisor� Iniciado por el contenedor� Sin transacción� Administrado por el bean
� Tipo de bean� Sesión o mensaje
� Tipo de método� De negocio y métodos interceptores� De callback desde el contenedor
Manejo de excepciones
![Page 205: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/205.jpg)
Excepciones de aplicación: gestión por el contenedor
� Generadas por un método de negocio� El contendor:
� Pasa la excepción al cliente (local o remoto)
� NO ANULA la excepción automáticamente� Se puede anular con setRollbackOnly
Manejo de excepciones
![Page 206: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/206.jpg)
Excepciones de sistema:gestión por el contenedor
Manejo de excepciones
![Page 207: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/207.jpg)
Manejo de excepciones en métodos de enterprisebean
Manejo de excepciones
![Page 208: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/208.jpg)
Manejo de excepciones de aplicación en el cliente del bean
Manejo de excepciones
![Page 209: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/209.jpg)
Manejo de excepciones del sistema en el código del cliente
Manejo de excepciones
![Page 210: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/210.jpg)
Manejo de excepciones del sistema en el código del cliente
Manejo de excepciones
![Page 211: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/211.jpg)
Manejo de excepciones del sistema en el código del cliente
Manejo de excepciones
![Page 212: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/212.jpg)
Excepciones de anulación de transacción
Manejo de excepciones
![Page 213: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/213.jpg)
Excepción de transacción requerida
Manejo de excepciones
![Page 214: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/214.jpg)
Contenidos
![Page 215: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/215.jpg)
Servicios de temporizador
� Se crean objetos timer� Los timers, a la expiración, llaman a métodos callback designados
� Los métodos callback pueden ser de:� Beans de sesión sin estado� Beans de mensajes
� Tipos de timer:� De único evento
� De tiempo absoluto (fecha y hora)De duración (lapso de tiempo)
Uso de servicios de temporizador
![Page 216: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/216.jpg)
Tipos de temporizadores
![Page 217: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/217.jpg)
Creación de un objeto Timer
Uso de servicios de temporizador
![Page 218: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/218.jpg)
Ejemplos de creación
Uso de servicios de temporizador
![Page 219: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/219.jpg)
Método de procesamiento de eventos de Timer
� El timer llama al método indicado del bean que lo creó
� Dos formas de indicar a qué método se debe invocar:� Usando la anotación @Timeout� Implementando la interfaz TimedObject
Uso de servicios de temporizador
![Page 220: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/220.jpg)
Ejemplo: implementando TimedObject
![Page 221: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/221.jpg)
Ejemplo: @Timeout
Uso de servicios de temporizador
Ver en Auction v.4
![Page 222: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/222.jpg)
Directrices para el uso de temporizadores� Si un bean crea varios temporizadores debe usar atributo info para distinguir quien llama al método de timeout (todos llaman al mismo)
� Si se cae el servidor, los temporizadores creados sobreviven a la caída� Los eventos perdidos se disparan todos al arrancar de nuevo
� El método Timeout puede ser transaccional� El contexto de seguridad en el que se ejecuta el método Timeout debe ser especificado en configuración
Uso de servicios de temporizador
![Page 223: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/223.jpg)
Administración de objetos de temporizador
Uso de servicios de temporizador
cancel
![Page 224: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/224.jpg)
Contenidos
![Page 225: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/225.jpg)
Arquitectura de seguridad
Implementación de la seguridad
![Page 226: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/226.jpg)
Autenticación y autorización
� Autenticación: asegura que el usuario es quien dice ser� La hace la infraestructura PKI de la empresa
� Autorización: verifica qué operaciones puede realizar el usuario� La hace el contenedor JEE� Deber ser configurado adecuadamente
Implementación de la seguridad
![Page 227: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/227.jpg)
Identidades de usuario en JEE
� Principal� Usuario autenticado en el dominio de seguridad JEE
� Rol� Grupo de Principales que comparten un conjunto común de permisos
Implementación de la seguridad
![Page 228: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/228.jpg)
Asignación de identidades a principales JEE
Implementación de la seguridad
La asignación depende del contenedor concreto, se hace en el momento de la puesta en marcha de la aplicación
![Page 229: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/229.jpg)
Autenticación del emisor de la llamada
Implementación de la seguridad
Depende de la infraestructura
Por el contenedor
![Page 230: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/230.jpg)
Estrategias de autorización
Implementación de la seguridad
![Page 231: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/231.jpg)
Autorización declarativa
� Por medio de:� anotaciones� descriptores de despliegue
� Hay que especificar:� Declaración del rol de seguridad� Asignación de permisos de métodos� Asignación de identidades de seguridad
Implementación de la seguridad
![Page 232: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/232.jpg)
Declaración de roles de seguridad
Implementación de la seguridad
Ver en Auction v.5
![Page 233: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/233.jpg)
Declaración de permisos de métodos
Implementación de la seguridad
![Page 234: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/234.jpg)
Ejemplo: Declaración de permisos con descriptor
Implementación de la seguridad
![Page 235: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/235.jpg)
Declaración de la identidad de seguridad
� La identidad con la que un bean llama a otro bean es la identidad del que le llama a él (por defecto)� use-caller-identity
� Es posible cambiarla: que un beanllame a otro con una identidad configurada� Run-as
Implementación de la seguridad
![Page 236: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/236.jpg)
Identidad run-asImplementación de la seguridad
![Page 237: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/237.jpg)
Autorización programática
� Por programa se puede averiguar el Principal del usuario y el rol con el que actúa� isCallerInRole� getCallerPrincipal
Implementación de la seguridad
![Page 238: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/238.jpg)
Método isCallerInRole
Implementación de la seguridad
![Page 239: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/239.jpg)
Mapeao de roles de bean a roles de aplicación
Implementación de la seguridad
![Page 240: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/240.jpg)
Método getCallerPrincipalImplementación de la seguridad
![Page 241: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/241.jpg)
Ejemplo completoImplementación de la seguridad
![Page 242: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/242.jpg)
Responsabilidades del implementador
Implementación de la seguridad
![Page 243: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/243.jpg)
Contenidos
![Page 244: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/244.jpg)
Patrones para EJB
Uso de las mejores prácticas de la tecnología EJB
![Page 245: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/245.jpg)
Elección de la tecnología EJB
Uso de las mejores prácticas de la tecnología EJB
![Page 246: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/246.jpg)
Factores que indicarían que EJB no es la tecnología
� Ya hay muchas inversiones en otras tecnologías
� Las limitaciones de EJB son impeditivas:� Theading, código nativo, variables estáticas
� Poca lógica de negocio, mucha presentación y consultas� Servlets, JSP, Struts, es mejor
� La aplicación es sencilla y no tiene previsión de crecer
Uso de las mejores prácticas de la tecnología EJB
![Page 247: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/247.jpg)
Algunos patrones conocidos aplicados a EJB
� Sesion bean �Fachada
� Secuenciador � Generador de claves
Uso de las mejores prácticas de la tecnología EJB
![Page 248: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/248.jpg)
Patrones conocidos en EJB
� Data Transfer Object
� Interfaz de mensajes
Uso de las mejores prácticas de la tecnología EJB
![Page 249: Sesion 5. Desarrollo de Componentes de Negocio (EJB)di002.edv.uniovi.es/~alberto_mfa/?download=Sesion 5. Desarrollo de... · Elementos de JEE Un conjunto de especificaciones Principales](https://reader030.vdocuments.pub/reader030/viewer/2022021715/5c44eca093f3c34c643e3d04/html5/thumbnails/249.jpg)
Minimización del uso de llamadas a métodos remotos
� Siempre que se pueda usar la interfaz local� Distribuir lo menos posible � cuantos más EJB en la misma JVM mejor
� Métodos de sesión bean remotos de alto nivel� Solo los bean interactúan con Entidades� Beans remotos pueden usar beans locales� Usar DTO para transferencias remotas de datos
Uso de las mejores prácticas de la tecnología EJB