unidad 6: ejb 3.0 david rodríguez [email protected]

22
Unidad 6: EJB 3.0 David Rodríguez [email protected]

Upload: dorotea-magallon

Post on 18-Apr-2015

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Unidad 6:EJB 3.0

David Rodrí[email protected]

Page 2: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Introducción• Los Enterprise JavaBeans son una de las API que forman

parte del estándar de construcción de aplicaciones empresariales Java EE .

• El modelo de programación propuesto por la versión 2.1 de EJB conllevaba una serie de inconvenientes que limitaron mucho el uso de esta especificación y conllevó la aparición de soluciones open source que suplían las carencias que presentaba EJB 2.1.

• El objetivo de Enterprise JavaBeans (EJB) 3.0 es simplificar el desarrollo de aplicaciones Java y estandarizar el API de persistencia para la plataforma Java.

• En esta unidad se detallan los EJB’s de sesión stateless y stateful.

Page 3: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Anotaciones

• Característica de Java 5• Solución a la meta-data

– Javadoc, XDoclet, Bean Info y Deployment descriptors

• Programación declarativa• Decoradores de código

– Ejemplo: @Overrides, @Deprecated

• Extensibilidad

Page 4: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

El estado de los datos• La mayoría de las aplicaciones Java EE que tienen interfaces

de usuario requieren mantener el estado de los datos.• Ejemplos típicos de datos que deben ser retenidos son

formularios de múltiples páginas y carritos de compra.• El estado de los datos puede ser almacenado en diferentes

lugares:

Page 5: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Historia de los EJB

• EJB 2.1– 5 archivos para definir el componente (8 con los DD).– Mucha complejidad.– Existencia de Entity Beans (BMP y CMP)

• EJB 3.0– 3 Archivos– Menos complejidad– Uso intensivo de anotaciones– Persistencia a través del API JPA.

Page 6: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

EJB - Estructura

• Interface– Remota– Local

• Implementación• Deployment descriptor

Page 7: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Tipos de EJB

PARA CARRITO DE COMPRAS

DAO

Page 8: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Clasificación de los Session Beans• Un session bean es un recurso cliente del lado del servidor. • Los session beans esencialmente funcionan como una

fachada de servicio, habilitando servicios del lado del servidor al cliente.

• Lo Session beans se clasifican en:– Stateful session beans– Stateless session beans

• Un stateful session bean mantiene el estado del cliente entre diferentes invocaciones a los métodos del bean.

• Un stateless session bean no mantiene el estado del cliente.

Page 9: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Clasificación de los Session Beans

Page 10: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Stateless Session Bean

Page 11: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Stateless Session Bean• Son EJB sin estado, no contienen atributos, para

utilizarlos en distintas llamadas de los métodos del EJB.@Remotepublic interface POJIHello { public void dimeAlgo();}@Statelesspublic class POJOHello implements POJIHello { public void dimeAlgo() { System.out.println("Algo"); }}

Page 12: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Stateful Session Bean

Page 13: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Stateful Session Bean• La principal diferencia es que un Stateful Session Bean estará siempre firmemente vinculada

a la ejecución del cliente, es decir, este tipo de beans tiene atributos que pueden ser accedidos, modificados, etc en las distintas llamadas al bean.

@Statefulpublic class CestaBean implements CestaRemote { protected Vector<Producto> cesta= new Vector<Producto>(); public void insertarProducto(Producto producto) throws CestaException { if (producto== null) { throw new CestaException("Cesta ist null"); } producto setUnidadesPedidas(best.getUnidades()); cesta.add(producto); } public Vector<Producto> getProductos() { return cesta; }}

Page 14: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Message Driven Bean

Page 15: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Message Driven Bean

• Son unos beans con una estrecha relación con JMS (Java Messaging Service).

• De hecho la mayoría de los MDB son consumidores de mensajes JMS.

• Los Message Driven Beans carecen de estado.• La comunicación entre un cliente y un Message-driven

Bean siempre se produce mediante JMS.

Page 16: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Entity Beans• Un Entity Bean es una clase Java normal que representa

con sus atributos las columnas de una tabla de una base de datos, si se necesita crear una nueva fila en base de datos, se crea una nueva instancia del entity bean si se desea modificar alguna columna de base de datos, se establece el atributo.

• Una instancia de un Entity Bean representa una fila de una tabla de base de datos.

• Los Entity Beans forman parte del estándar EJB 3.0 para la persistencia de datos (es decir JPA).

Page 17: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Entity Beans@Entity@Table(name = "categoria")public class Categoria implements Serializable{

@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id_categoria")private Integer idCategoria;@Column(name = "nombre")private String nombre;@Column(name = "descripcion")private String descripcion;

// AQUÍ VAN LOS MÉTODOS SET Y GET}

Page 18: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

JPA• Es el API de persistencia desarrollada para la

plataforma Java EE e incluida en el estándar EJB 3 (Enterprise Java Beans) .

• El objetivo que persigue el diseño de esta API es no perder las ventajas de la orientación a objetos al interactuar con una base de datos, y permitir usar objetos regulares conocidos como POJOS (Plain Old Java Object )

• Consta de:– Java Persistence API– Query Language– Object relational mapping metadata

Page 19: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

JPA• Ciclo de vida Entity Beans

El control real de un Entity Bean reside en el EntityManager, cuando se produce un evento en un entity bean, el EntityManager llama a los métodos lifecycle-callback si la clase los ha implementado.

• Métodos LifeCycle-Callbacks– PrePersist– PostPersist– PreRemove– PostRemove– PreUpdate– PostUpdate– PostLoad

Page 20: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

JPA• EntityManager

Los Entity Beans son clases Java normales enriquecidos con metainformación para que el EntityManager se encuentre en posición de mantener sus atributos sincronizados con la base de datos.EntityManager supervisará cada modificación en los atributos y decidirá a lo largo de la transacción lo que es necesario para mantener la consistencia entre los datos en memoria de los Entity Beans con los datos en base de datos.

• Persistence UnitSon todos los Entity Beans que controla el EntityManager.• Persistence Context

Es la suma de todos los Entity Beans que controla el EntityManager y el estado en el que se encuentran, es decir, se encuentra definido por la transacción en la que se encuentra en un momento determinado.

• EntityManager FactoryLas aplicaciones crean instancias de EntityManager en esos casos mediante el método createEntityManager de javax.persistence.EntityManagerFactory.

Page 21: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

JPA• Multi-tables Mappings

En una base de datos relacional surgen inevitablemente una gran variedad de relaciones entre tablas de la base de datos.Por ejemplo en una tabla de pedidos, habrá una referencia al id del usuario que hace el pedido, y no puede existir ningún pedido por un usuario que no exista.– @JoinColumn– @PrimaryKeyJoinColumn– @PrimaryKeyJoinColumns– @OneToOne– @OneToMany– @ManyToOne– @ManyToMany

Page 22: Unidad 6: EJB 3.0 David Rodríguez drodriguez@tecsup.edu.pe

Bibliografía

• Enterprise JavaBeans Technology: Implementing Session Beans and Java Persistence (WJ-3512-EE5)

• Diego Mornacco y Sergio Gianazza. Workshop EJB 3.0

• HRCS. EJB 3.0 - JPA