Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autores: Simon Pickin Florina Almenrez Mendoza Natividad Martnez Madrid Pablo Basanta Val Departamento de Ingeniera Telemtica Universidad Carlos III de Madrid Espaa 1.0
Direccin:
Versin:
Software de Comunicaciones 2009-2010 The Authors
La capa de persistencia
Mencionado en los Core J2EE Patterns de Sun Similar al patrn Fowlers Table Data Gateway Utilizado a menudo con el patrn DTO
Factoras multi-clase
Retorna un puntero a una factora DAO Un cliente crea DAOs con la misma interfaz abstracta
ORM puede ser visto como un active record, o similar, con generacin de cdigo mxima y soporte aadido para muchos de los siguientes mecanismos:
Transacciones Polticas cach Integridad relacional Persistencia explicita Mapeo de transacciones
Asociaciones a objeto (1:1, 1:N, N:1, M:N) restricciones de clave fornea Un objeto simple representa una fila Mltiples objetos representan una fila Objetos sencillo representando mltiples columnas (uniones de SQL)
desarrollos/aplicaciones
usan
Identificar, encapsulacin del estado + comportamiento, Herencia, polimorfismo Relacin, atributo, tupla, valor relacional, variable relacional.
Modelo relacional
Software de Comunicaciones 2009-2010 The Authors
2. Mapeo manual
5. Mezclar y encajar
Cuestiones de gestin
Hasta qu punto debera el tipo de aplicacin o la aplicacin escogida constreir el esquema de la base de datos?
El modelo relacional puede ser usado por mltiples aplicaciones
Tambin hay que tener cuidado con el caching de la base de datos.
2.
3.
Tabla-por-jerarqua-de-herencia
4.
Polimorfismo
Inclusin de polimorfismo en lenguajes OO:
Mecanismo que permite diferentes tipos para exponer diferente comportamiento a travs de la misma interfaz Uso de herencia Uso ms comn: para sobrescribir un mtodo de superclase en una subclase (enlazado tardo) A veces puede emular la sobrescritura de mtodo
Dependiendo del mapeo de herencia escogido
Contexto ORM
Modelo OO
Una misma entidad es consultada dos veces, cargada dentro de diferentes instancias de objeto
Puede entraar problemas Aadir claves generadas por la base de datos y crear nuevos valores para cada instancia de objeto Puede ser poco prctico
Composicin
Borrar el compuesto
Modelo OO: No hay problema (recoleccin de basura) Modelo relacional: Debera de ser explcito
La relacin compuesta es 1-N: problemtico Uso de disparadores para la base de datos Mantener la coherencia a nivel de aplicacin
Contencin
Contenedores
Modelo OO: colecciones, listas, conjuntos Modelo relacional: slo relaciones
Dificultad a la hora de modelar contenedores OO en el modelo relacional Ejemplo: listas con duplicados, soluciones:
Muchos DBMS permiten duplicados, incluso si son dudosos tericamente, aunque no normalizados Repartir sobre dos o ms tablas para normalizar
Comprensin normal:
10
Encapsulacin
Encapsulacin OO
Modificadores de acceso: privado, protegido, pblico Interfaces
Mundo relacional
11
Arriba-Abajo
Modelo relacional optimizado para el modelo de dominio Puede involucrar la generacin de un esquema de base de datos para un armazn ORM Esquema orientado a una aplicacin simple
No utilizable fcilmente por otras aplicaciones Integridad usualmente forzada a nivel de aplicacin
A menudo usa claves primarias generadas por la base de datos para todas las relaciones
Aunque ms probablemente rompe la normalizacin
Abajo-Arriba
Modelo de dominio optimizado para el esquema relacional Puede involucrar generacin de cdigo de aplicacin desde el esquemtico de la base de datos A menudo usa mapeo 1-1 de tablas a clases
Qu pasa con la herencia y la encapsulacin? Navegacin va el modelo relacional (ineficiente)
Los objetos pueden perder sus asociaciones El modelo del domino producido no es muy entendible para no-desarrolladores El modelo relacional no se desenvuelve sencillamente
12
Encontrarse en medio
Modelo de dominio optimizado para comunicacin con nodesarrolladores Esquema relacional optimizado para fiabilidad y eficiencia Aproximacin ms comn
Parcialmente causada por la larga vida de los esquemticos de la base de datos
13
Pesado y verboso Clases persistentes automticamente Los objetos persistentes no pueden ejecutar fuera del contenedor
Dificultad al usar pruebas unitarias
no
est
especificado
14
Ligero Utiliza POJOs Los objetos persistentes pueden ejecutar fuera del contenedor de EJBs Mapeo objeto-relacin completamente especificado Para hacer clases persistentes
Invoca explcitamente mtodos sobre un gestor de persistencia
Define un lenguaje de consulta de objetos (HQL) Utiliza JDBC Anotaciones Hibernate + Manager Hibernate
Provee una implementacin JPA encima de Hibernate Core
Todo SQL externalizado a archivos XML (SQLMaps) Los objetos almacenados e invocados son Java beans Los POJOs pueden estar mapeados a parmetros de entrada de una orden SQL o a resultados de ejecutar una peticin SQL Usa JDBC
Software de Comunicaciones 2009-2010 The Authors
15
Define un lenguaje de consulta de objetos (JPQL) Alternativa al desarrollo de descriptores de despliegue: anotaciones Java
16
Patterns of Enterprise Application Architectures. Martin Fowler. AddisonWesley 2002. Summary available at:
http://martinfowler.com/eaaCatalog/
J2EE Patterns
http://java.sun.com/blueprints/patterns/
34
17
Entidades
Entidad
Agrupacin de estado tratado como unidad nica Puede ser persistida Normalmente slo creada, destruida y actualizada con una transaccin
Entidad JPA
POJO de grano fino con las siguientes restricciones
Pblico o protegido, constructor sin argumento Los campos persistentes son privados, protegidos, o paquete privado
Los clientes acceden al estado va mtodos de acceso o mtodos de negocio
Metadatos de entidad
Las entidades JPA tienen asociados metadatos
Posibilitando una capa de persistencia para reconocer y manejar entidades Especificada para bien usar anotaciones Java o un XML
Las anotaciones son ms sencillas
Contenedor Java EE
Contenedor web + contenedor de EJBs + proveedor de persistencia
18
Gestionando entidades
API EntityManager
Crea y elimina entidades persistentes Encuentra entidades a travs de la clave primaria de la entidad Permite que las peticiones puedan correr sobre entidades
Utiliza Java Persistence Query Language (JPQL)
Unidades de persistencia
Una unidad de persistencia
Representa el dato contenido en un almacn de datos simple Tiene asociado un EntityManagerFactory
Crea instancias del gestor de entidades con una configuracin dada
Fichero persistence.xml:
Contiene la definicin de una o ms unidades persistentes JPA dentro de un contenedor Java EE Muchas ms cosas para definir en el archivo persistence.xml
19
Si la clave es compuesta
La interfaz Query
El mtodo find() se usa para buscar una entidad simple por clave primaria
Bsquedas ms complicadas requieren la interfaz Query La misma interfaz usada para actualizaciones mltiples y borrados (nuevo en EJB3)
20
e incluso ms a HQL (Hibernate Query Language) Se permiten sub-peticiones en clusulas WHERE y HAVING Funciones de conjunto para ser usadas en peticiones de agrupamiento y agregacin
AVG, COUNT, MAX, MIN, SUM
// fuente: Pro EJB3, Java Persistence API. M. Keith, M. Schincariol @Entity public class Employee { @Id private int id; private String name; private long salary; public Employee(){} public Employee(int id) {this.id = id;} public public public public public public }
Software de Comunicaciones 2009-2010 The Authors
int getId() {return id;} void setId(int id) {this.id = id;} String getName() {return name;} void setName(String name) {this.name = name;} long getSalary() {return salary;} void setSalary(long salary) {this.salary = salary;}
21
22
// fuente: JBoss EJB3 tutorial, B. Burke @Entity @Table(name=AUCTION_ITEM) public class Item { private long id; private String description; private String productName; private Set<Bid> bids = new HashSet(); private User seller; @Id(generate=GeneratorType.AUTO) @Column(name=ITEM_ID) public long getId() { return id; } public void setId(long id) { this.id = id; } . }
Software de Comunicaciones 2009-2010 The Authors
create table AUCTION_ITEM ( ITEM_ID Number, DESC varchar(255), ProductName varchar(255), USER_ID Number );
23
@Column(name=CITY, secondaryTable=ADDRESS) public String getCity() { return city; } protected void setCity(String city) { this.city = city; }
Software de Comunicaciones 2009-2010 The Authors
24
Software de Comunicaciones 2009-2010 The Authors
Una asociacin bidireccional tambin se dice que tiene una lado inverso En OneToMany y ManyToOne: el poseedor debe de tener muchos lados
En OneToOne: el poseedor debe de ser un lado que contiene una clave
fornea El lado inverso usa mappedBy, elemento de anotacin de multiplicidades que identifica el atributo correspondiente sobre el lado perteneciente
25
@Entity public class Employee @Id private ind id; private String name; @ManyToMany //En lado inverso hay @ManyToMany(mappedBy="projects") @JoinTable(name="EMP_PROJ", // anotacin slo sobre lado poseedor joinColumns=@JoinColumn(name="EMP_ID"), inverseJoinColumns=@JoinColumn(name="PROJ_ID")) private Collection<Project> projects;
Columna de unin
Para el lado poseedor descrito en el elemento joinColumns Para el lado inverso descrito en el elemento
inverseJoinColumns
Se usan los nombres por defecto si no se especifica nada (tambin para la tabla de unin)
ORM: Herencia
26
hasta
remove()
que
de
persist(),
Escribe de forma alineada a la base de datos de acuerdo a una de las siguientes polticas:
Cuando una transaccin se compromete
javax.persistence.FlushModeType = COMMIT
Para descargar cambios explcitamente a la base de datos EntityManager.flush() (c.f. tambin EntityManager.refresh())
Otras posibilidades
Fijar el nivel de aislamiento globalmente (ver la seccin de transacciones) Al mtodo EntityManager.lock(), pasarle una entidad como parmetro
Cerrojo de lectura: parmetro LockModeType.READ
Una actualizacin de transaccin puede fallar si otra transaccin tiene un cerrojo de lectura Cerrojo de escritura: parmetro LockModeType.WRITE Fuerza incrementos del campo de versin si la entidad es actualiza o no
27
por
mtodos
call-back
Restricciones sobre un mtodo que puede ser del ciclo de la vida o retrollamada:
No tiene argumentos, retorna void, no lanza excepciones de aplicacin
28
La interfaz EntityTransaction
Es similar a la interfaz JTA UserTransaction (ver ms tarde) Operaciones: begin, commit, rollback, isActive, setRollbackOnly, getRollbackOnly, Operaciones implementadas va mtodos de transaccin JDBC
Connection
Obtenidos va EntityManager.getTransaction()
29
Aproximacin ingenua
Embeber la lgica de localizacin / instanciacin de servicio en el cdigo de su cliente Problemas con la aproximacin ingenua:
Los cambios en el acceso del servicio implican cambios en el cdigo de muchos clientes Difcil en casos de pruebas unitarias con componentes sin usar un servicio real
Inyeccin de dependencia
Es una forma particular de IdC Asegura que la configuracin de servicios est separada del uso Las dependencias estn configuradas externamente en un lugar
Para clientes mltiples
30
31
Pro EJB3. Java Persistence API. Mike Keith and Merrick Schincariol. Apress, 2006
http://books.google.com/books?id=fVCuB_Xq3pAC
Inversion of Control Containers and the Dependency Injection pattern. Martin Fowler, 2004
http://www.martinfowler.com/articles/injection.html
32
65
Introduccin
La capa de negocio implementa la lgica de negocio
Esto es, la funcional nuclear de una aplicacin empresarial
Enterprise JavaBeans (EJB) es una especificacin completa de una arquitectura de servicios basada en componentes
Ejecutan lgica de negocio Acceso a bases de datos Se integra con otros sistemas
Ventajas de los EJBs: El desarrollador se concentra en la lgica de negocio y usa los servicios del contenedor
transacciones, seguridad, gestin de ciclo-de-vida, multi-hilo, almacn de conexiones, etc.
Software de Comunicaciones 2009-2010 The Authors
33
67
34
Comunicaciones seguras
Concurrencia (multi-hilo)
El desarrollador de beans no codifica explcitamente el multi-hilo Por ejemplo, las dos maneras de manejar peticiones concurrentes
Mantener un pool de instancias y peticiones directas a instancias del bean del repositorio Serializar peticiones a una instancia de un bean. 69
Mensajera:
El contenedor provee acceso al servicio de mensajera
API JMS (Java Messaging Service)
Los receptores de los mensajes deben ser beans dirigidos por mensajes
Cualquier bean empresarial puede ser un emisor de mensajes
Software de Comunicaciones 2009-2010 The Authors
70
35
Persistencia (EJB2):
Los beans de entidad EJB2.1 pueden ser usados como alternativa a las entidades de JTA
El contenedor EJB3 debe soportar beans de entidad EJB2.1
Las instancias de los beans de entidad en memoria estn enlazadas a datos de negocio
El contenedor garantiza la consistencia (con carga y almacenamiento peridico)
El desarrollo del bean no codifica el acceso a la base de datos explcitamente Generalmente soporta conexin a bases de datos relacionales El significado exacto de la persistencia depende del contenedor y es 71 independiente del bean
Las aplicaciones empresariales estn organizadas en componenentes que implementan entidades de negocio o procesos de negocio
Las entidades de negocio representan informacin empresarial Los procesos de negocio representan la manipulacin de dicha informacin
72
36
Entidades de negocio
Las entidades de negocio son objetos de negocio:
Representan informacin mantenida por la compaa Tienen estado persistente (mantenido en una base de datos)
Ejemplos:
cliente, orden de compra, cuenta, empleado,...
Procesos de negocio
Objetos de negocio que encapsulan una interaccin entre un usuario y una entidad de negocio
Actualizan un estado de entidades de negocio Mantienen una entidad nica a travs del ciclo de vida
Estado transitorio: proceso completado en una conversacin con un actor: proceso de negocio conversacional
Ejemplo: retirada de dinero de un cajero
74
37
Reglas de negocio
Distribuidas entre los componentes que implementan las entidades y los procesos de negocio
De acuerdo a si la regla se aplica a la entidad o al proceso
Ejemplos:
Entidad:
El balance de una cuenta no puede ser negativo (independiente del proceso que causa que ocurre)
Proceso:
La mxima cantidad que puede ser retirara de un cajero es 500 (independiente del estado de la entidad de la cuenta)
Software de Comunicaciones 2009-2010 The Authors
75
Soporte a la informacin pasiva va mtodos para las operaciones sobre datos Reciben llamadas sncronas a mtodos definidos en la interfaz de negocio
Procesos ejecutados como respuesta a la recepcin de un mensaje Reciben llamadas asncronas a travs de un canal
76
38
por
varios
clientes
conjuntamente
Software de Comunicaciones 2009-2010 The Authors
Slo para beans de entidad: la persistencia puede ser manejada por el bean o por el contenedor (no se ve desde el cliente la diferencia) Solo para entidades JPA: pueden ser desacopladas de la capa de persistencia, y re-acopladas (mezcladas) a la capa de persistencia.
77
Los beans dirigidos por mensajes son receptores de mensajes Usan un servicio de mensajera
Intermediario entre el emisor y el bean dirigido por mensajes Mensajes entrantes capturados por el contenedor y redirigidos a una instancia de bean Patrn publicador-subscriptor: emisor y receptor (bean dirigido por eventos) mutuamente annimos.
Comunicacin asncrona
Beans de entidad y sesin: (bloqueo) invocaciones sncronas a mtodos
Como los beans de sesin sin estado: no pueden mantener informacin sobre el estado del emisor
78
39
Beans de sesin
Ciclo de vida del bean de sesin
Instancia creada / enlazada cuando un cliente llama al bean
Asociada a un cliente como recurso privado durante la duracin de un proceso cliente
80
40
81
41
@Remote public interface ShoppingCart { public void addItem(int prodId, int quantity); public void checkout(); } @Stateful public class ShoppingCartBean implements ShoppingCart { @Remove public void checkout() } }
Software de Comunicaciones 2009-2010 The Authors
84
42
Con anotacin de campo / mtodo set: inyeccin de campo / mtodo set Elementos involucrados name, type, authenticationType,
Software de Comunicaciones 2009-2010 The Authors
85
El objeto EJBContext puede obtenerse va inyeccin (@Resource) Los beans de sesin: usan SessionContext (que extiende EJBContext)
86
43
87
44
Los beans de sesin sin estado no tienen estado dependiente del cliente, aunque
Pueden tener variables de mtodo Pueden obtener informacin del ENC de JNDI o una base de datos
Gestin de recurso:
Alta dinamicidad: ahorra tiempo de creacin de una instancia en su invocacin Uso eficiente de memoria: minimiza el nmero de instancias 89
90
45
Pasivacin:
Desasociacin de un objeto EJB (a una clase representante de un bean) desde una estancia de bean La serializacin del estado de estancia a un almacenamiento secundario
Activacin:
Deserializacin de un estado almacenamiento secundario de una instancia desde un
Liberar cualquiera recursos que estn siendo usados por el bean Colocar el bean en el repositorio Activacin Coger un bean annimo del pool Tomar los recursos que sern usados por el bean Cargar datos desde la base de datos subyacente dentro de los atributos del bean Restaurar la conexin con el objeto EJB
92
46
Los mtodos del ciclo de vida de retro-llamada para cualquier tipo de bean de sesin
Mtodos anotados con @PostConstruct
Llamados por el contenedor justo despus de crear una nueva instancia de la clase
94
47
El contenedor inyecta cualquier dependencia de contexto requerida El contenedor llama a mtodos de retrollamada opcionales etiquetados con @PostConstruct
Creacin y destruccin
Creacin:
Si no hay reutilizacin: cuando un cliente busca obtener una referencia de bean Si la hay: cuando la poltica del contenedor lo requiere Si no hay reutilizacin: cuando la invocacin retorna Si lo hay: cuando el contendor lo requiere
Destruccin:
48
Creacin y destruccin
Creacin:
Cuando un cliente busca obtener una referencia a un bean
Destruccin:
Cuando un cliente llama a un mtodo anotado con @remove o cuando vence el temporizador
Activacin y pasivacin
pasivacin,despus de llamar a cualquier mtodo opcional
@PrePassivate Cuando se alcanza un lmite en el nmero de beans instanciados
de
llamar
cualquier
mtodo
opcional
Transacciones
Transaccin:
Un conjunto de tareas que se ejecutan atmicamente
Si una o ms tareas fallan: deshacer la transaccin Si todas las tareas son exitosas: comprometerla
Propiedades ACID
Atomicidad, Consistencia, aIslamiento, Durabilidad
Transacciones programticas
Demarcacin de transaccin manejada por el bean (BMT) Transacciones iniciadas por el cliente
Software de Comunicaciones 2009-2010 The Authors
pros: un cliente es consciente de si la transaccin ha sido deshecha o comprometida 98 cons: problemas de rendimiento
49
transaccionales
para
controlar
la
Declarado como anotaciones o en el descriptor de despliegue Asociado con cada mtodo de EJB
El contenedor automticamente
usa
el
API
JTS
para
gestionar
El comienzo y el fin de una transaccin La iteracin con la base de datos Creacin y propagacin del contexto durante la transaccin
Software de Comunicaciones 2009-2010 The Authors
99
Comportamiento transaccional
Puede depender de la lgica de negocio
Un uso explcito de
El API de transacciones de Java (JTA) JDBC, si es necesario
Por ejemplo un bean de sesin envolviendo cdigo legado
50
Definiciones
Contexto transaccional
Define un mbito transaccional y los objetos participantes y sus operaciones Por defecto, se propaga entre objetos transaccionales como EJBs
Objetos transaccionales
Objetos cuyos mtodos son invocados en una transaccin Pueden ser asociados slo con una transaccin al tiempo
Atributos transaccionales
Especiacin por mtodo en la gestin de transaccin (mediante el contenedor) de la invocacin
Cliente transaccional
Un agente que invoca mtodos sobre objetos transaccionales
Software de Comunicaciones 2009-2010 The Authors
Gestor de transaccin
Un agente que coordina el procesado de la transaccin
51
Uso: Mtodos que actualizan la base de datos u otro recurso que soporte transacciones
RequiresNew:
Si un invocador tiene un contexto transaccional, se suspende durante la duracin de la ejecucin de ese mtodo En todo caso, se crea una nueva transaccin Se usa cuando no se quiere que un fallo en una transaccin cause un fallo en una transaccin ms amplia
52
NotSupported:
Si un invocador tiene un contexto transaccional, este se suspende durante la duracin de la ejecucin de ese mtodo Si no, no se usa un contexto transaccional En todo caso, un mtodo ejecuta sin un contexto transaccional Ejemplo de uso: manejadores de recursos que no propagan la transaccin
Never:
Si un invocador tiene contexto de transaccin, se lanza una excepcin
RemoteException o EJBException
Si no, un mtodo procede normalmente, sin un contexto Usado para recursos no-transaccionales
53
Contexto transaccional del mtodo de negocio T Contexto nuevo creado por el contenedor Contexto nuevo creado por el contenedor Contexto nuevo creado por el contenedor T Ninguno Ninguno Ninguno T Excepcin Excepcin Ninguno
Never
T Ninguno
54
CMT
55
BMT
Un mtodo de negocio puede iniciar una nueva transaccin
Declarar el uso de BMT a travs de la anotacin @TransactionManagement Obtener un objeto UserTransaction
A travs de EJBContext.getUserTransaction() o por inyeccin
Objeto UserTransaction
Propagado a otros EJBs en la invocacin a mtodo
A no ser que se declare el uso de un BMT
Mtodos:
begin, commit, rollback, setRollbackOnly, No hay mtodo getRollBackOnly
56
implementa
la
interfaz
Inserciones, actualizaciones y borrados estn encolados hacia el contexto de persistencia metidos en una lista Puede justificar el uso de NotSupported en algunos mtodos de EJBs con entidades
57
Aislamiento transaccional
Ver transparencias JDBC para ms informacin sobre los niveles de aislamiento de transaccin Nivel de aislamiento ms alto
Menos problemas de concurencia Rendimiento ms bajo
BMT: El nivel de aislamiento puede ser especificado desde EJB usando el API de la base da datos
JDBC: usando Connection.setTransactionIsolation()
CMT y BMT
Pueden usar bloqueo programtico: EntityManager.lock()
Mastering Enterprise JavaBeans 3.0. Rima Patel Sriganesh, Gerald Brose, Micah Silverman. Wiley 2006.
http://www.theserverside.com/tt/books/wiley/masteringEJB3/index.tss
Enterprise JavaBeans 3.0, 5th edition. Bill Burke, Richard Monson-Haefel. OReilly 2006.
http://proquest.safaribooksonline.com/059600978X
Beginning EJB 3 application development: from novice to professional. Raghu Kodali, Jonathan Wetherbee, Peter Zadrozny. Apress 2006.
http://books.google.com/books?id=xnbJkOIZfFgC
Software de Comunicaciones 2009-2010 The Authors
EJB 3 in Action. Debu Panda, Reza Rahman, Derek Lane. Manning 2007 Enterprise JavaBeans Technology. Sun Microsystems.
http://java.sun.com/products/ejb/
JSR 220: Enterprise JavaBeans 3.0. The Java Community Process 2006.
http://jcp.org/en/jsr/detail?id=220
58
117
118
59
despliegue:
documento
XML
Informacin sobre el :
Nombre del EJB Nombre de la clase del EJB Tipo de EJB Nombre de las interfaces home y de negocio Servicios que el EJB espera de su contenedor Dependencias sobre otros EJBs y gestores de recursos c.f. nocin de interfaces requeridas en el desarrollo basado en componentes
119
Caractersticas de la vista-cliente
Interfaces remotas
Interfaz home (el contenedor genera un objeto por clase)
Crea y elimina beans de sesin y entidad, busca beans de entidad Extiende javax.ejb.EJBHome
de
negocio
(el
contenedor
genera
un
Interfaces locales
local home Interface (el contenedor genera 1 objeto por clase)
Crea y destruye una sesin y beans de entidad, encuentra beans de entidad Extiende javax.ejb.EJBLocalHome
60
extends
implements
Deployment Descriptor
121
import java.rmi.RemoteException; import javax.ejb.CreateException; public interface HelloHome extends javax.ejb.EJBHome { // Mtodos de creacin Hello create() throws RemoteException, CreateException; } import java.rmi.RemoteException; public interface Hello extends javax.ejb.EJBObject { public String hello() throws RemoteException;
Software de Comunicaciones 2009-2010 The Authors
}
122
61
import javax.ejb.CreateException; public interface HelloLocalHome extends javax.ejb.EJBLocalHome { // Mtodos de creacin HelloLocal create() throws CreateException; }
62
EJB3
Interfaz de negocio
Un objeto normal Java (POJI) Conexin con la clase del bean hecha con la palabra clave Java implements (POJI) Una interfaz simple con @Remote y/o una anotacin @Local
Interfaz home
Para create(), find(), etc. Debe extender una interfaz especial Interfaces locales y o remotas
63
EJB3
Descriptor XML de despliegue
Se pueden utilizar anotaciones Java EE 5 pros: anotaciones mucho ms sencillas pros: puede ser utilizado un descriptor de despliegue
Persistencia va JPA
Entidades (POJOS) + EntityManager Mapeo explcito y controlable por desarrollador (pero con valores por defecto) el
Pruebas
Software de Comunicaciones 2009-2010 The Authors
Pruebas
EJBs y entidades JPA probables fuera del contenedor (los beans son POJOs)
128
64
129
Mastering Enterprise JavaBeans, 3rd edition. Ed Roman, Rima Patel Sriganesh, Gerald Brose. Wiley 2005.
http://www.theserverside.com/tt/books/wiley/masteringEJB/index.tss
65