64
Aurelio Martín Obando Távara [email protected] proyectos ii INTRODUCCIÓN A JEE5 – PARTE II

P2C5 Introducción a JEE5 - II

Embed Size (px)

DESCRIPTION

Esta presentación les ayudará a entender como JPA maneja las relaciones de clases y las llaves primarias compuestas.Además de como crear validadores y conversores.

Citation preview

Page 1: P2C5 Introducción a JEE5 - II

Aurelio Martín Obando Tá[email protected]

proyectos ii

INTRODUCCIÓN A JEE5 – PARTE II

Page 2: P2C5 Introducción a JEE5 - II

Enalteciendo Los Temas

2Beans de Sesión

3Converter y

Validator

1 1Entidades

Page 3: P2C5 Introducción a JEE5 - II

AGENDA EntidadesBeans de SesiónConverter y ValidatorResumen

Clase 05

1

Page 4: P2C5 Introducción a JEE5 - II

2 CONTENIDO

Page 5: P2C5 Introducción a JEE5 - II

Una entidad es un objeto del dominio de persistencia, pero mucho mas ligero. Típicamente una entidad representa una tabla de un modelo de datos relacional, en donde cada instancia de la entidad es una fila en dicha tabla.

JPA brinda soporte para facilitar la construcción y mantenimiento de las relaciones entre clases, su cardinalidad: @OneToOne, @OneToMany, @ManyToOne, @ManyToMany y la navegabilidad: Bidireccional y Unidireccional.

Y finalmente, brinda gran facilidad al momento de mapear herencias o especializaciones entre objetos.

ENTIDADES

Page 6: P2C5 Introducción a JEE5 - II

Toda entidad debe tener una llave primaria

Puede mapearse a una (llave primaria simple) o más (llave primaria compuesta) propiedades

Consiste de múltiples llaves primarias simples

LAVES PRIMARIAS COMPUESTAS

Page 7: P2C5 Introducción a JEE5 - II

Llav

es P

rimar

ias

Com

pues

tas Consiste de múltiples llaves primarias

Puede ser representada por un clase “Primary Key” que…

debe ser Serializablepublic class MowerPK implements java.io.Serializable {

debe tener un constructor público sin paso de parámetros

public MowerPK() { … }debe implementar los métodos equals() y hashCode() public int hashCode() { ... }

public boolean equals(Object obj) { ... }

Page 8: P2C5 Introducción a JEE5 - II

Usa

ndo

una

Clas

e Pr

imar

y Ke

y co

mo

un Id

Clas

sNo es usada internamente por clases persistentes

Usado por el Entity Manager

Ejemplo de esquema de base de datos

create table MOWER (make varchar(255) not null, model varchar(255) not null, size integer not null, primary key (make, model)

)

Page 9: P2C5 Introducción a JEE5 - II

Ejem

plo

de C

lase

Com

pues

ta

PKpackage ejava.examples.orm.core;

import java.io.Serializable;public class MowerPK implements Serializable { private static final long serialVersionUID = 1L; private String make; private String model; public MowerPK() { … } public MowerPK(String make, String model) { this.make = make; this.model = model; } public static long getSerialVersionUID() { return serialVersionUID; } public String getMake() { return make; } private void setMake(String make) { this.make = make; }…

Page 10: P2C5 Introducción a JEE5 - II

Ejem

plo

de C

lase

Com

pues

ta

PK (C

ont.)

… public String getModel() { return model; } private void setModel(String model) { this.model = model; } public int hashCode() { return make.hashCode() + model.hashCode(); } public boolean equals(Object obj) { try { if (this == obj) return true; return make.equals(((MowerPK)obj).getMake()) && model.equals(((MowerPK)obj).getModel()); } catch (Throwable ignored) { return false; } } public String toString() { return super.toString() + ", make=" + make + ", model=" + model; }}

Page 11: P2C5 Introducción a JEE5 - II

Ejem

plo

de u

so d

e un

IdCl

ass package ejava.examples.orm.core.annotated;

import java.io.Serializable;import javax.persistence.*;import ejava.examples.orm.core.MowerPK;

@Entity@Table(name="MOWER")@IdClass(MowerPK.class)public class Mower implements Serializable { private static final long serialVersionUID = 1L; private String make; private String model; private int size; public Mower() { … } public Mower(String make, String model) { this.make = make; this.model = model; }

Page 12: P2C5 Introducción a JEE5 - II

Ejem

plo

de u

so d

e un

IdCl

ass

(Con

t.)

… @Id @Column(nullable=false, updatable=false) public String getMake() { return make; } private void setMake(String make) { this.make = make; } @Id @Column(nullable=false, updatable=false) public String getModel() { return model; } private void setModel(String model) { this.model = model; } public int getSize() { return size; } public void setSize(int size) { this.size = size; }}

Page 13: P2C5 Introducción a JEE5 - II

Usa

ndo

un c

lase

Prim

ary

Key

com

o un

Em

bedd

edId

Esquema de base de datos

create table NAPSACK (NAPSACK_MAKE varchar(255) not null, NAPSACK_MODEL varchar(255) not null, size integer not null, primary key (NAPSACK_MAKE, NAPSACK_MODEL)

)

Page 14: P2C5 Introducción a JEE5 - II

Ejem

plo

de E

mbe

dded

Idpackage ejava.examples.orm.core.annotated;

import java.io.Serializable;import javax.persistence.*;

@Embeddablepublic class NapsackPK implements Serializable { private static final long serialVersionUID = 1L; private String make; private String model; public NapsackPK() { … } public NapsackPK(String make, String model) { this.make = make; this.model = model; }

@Column(name="NAPSACK_MAKE") public String getMake() { return make; } public void setMake(String make) { this.make = make; }

Page 15: P2C5 Introducción a JEE5 - II

Ejem

plo

de E

mbe

dded

Id

(Con

t.)

@Column(name="NAPSACK_MODEL") public String getModel() { return model; } public void setModel(String model) { this.model = model; }

public int hashCode() { return make.hashCode() + model.hashCode(); }

public boolean equals(Object obj) { try { if (this == obj) return true; return make.equals(((NapsackPK)obj).getMake()) && model.equals(((NapsackPK)obj).getModel()); } catch (Throwable ignored) { //catch NP & Cast Exceptions return false; } } public String toString() { return super.toString() + ", make=" + make + ", model=" + model; }}

Page 16: P2C5 Introducción a JEE5 - II

Ejem

plo

de u

so d

e Em

bedd

edId

usan

do A

nota

cion

espackage ejava.examples.orm.core.annotated;

import java.io.Serializable;import javax.persistence.*;

@Entity@Table(name="NAPSACK")public class Napsack implements Serializable { private static final long serialVersionUID = 1L; private NapsackPK pk; private int size; public Napsack() {} public Napsack(String make, String model) { this.pk = new NapsackPK(make, model); } @EmbeddedId public NapsackPK getPk() { return pk; } public void setPk(NapsackPK pk) { this.pk = pk; } …}

Page 17: P2C5 Introducción a JEE5 - II

JPA reconoce y mapea las relaciones en el modelo de datos relacional y lo translada a las clases en el modelo de dominio

De este modo, las cardinalidades como Uno-a-Uno, Muchos-a-Uno, Uno-a-Muchos y Muchos-a-Muchos existen como anotaciones en el marco de trabajo JPA

Estas anotaciones también son susceptible a cierta optimización de acuerdo a ciertas características que veremos a continuación

MAPEO DE OBJETOS Y RELACIONES

Page 18: P2C5 Introducción a JEE5 - II

One-To-One (Uno-a-Uno)

Page 19: P2C5 Introducción a JEE5 - II

One

ToO

neUni-direccional

Bi-direccional

Page 20: P2C5 Introducción a JEE5 - II

One

ToO

ne

Uni-Direcciona

l

•solo una clase (“owner”) conoce la relación•usa

@OneToOne•esta clase

define el mapeo a la base de datos•podría usar

@JoinColumn o @JoinTable

Bi-Direcciona

l

•ambas clases conocen la relación•usan @OneToOne

•una clase (“owner”) define el mapeo a la base de datos•podría usar

@JoinColumn o @JoinTable

•la otra clase (“inverse side”) señala la propiedad de la clase dueño que define la relación•usa

@OneToOne(mappedBy=”remote property”)

Page 21: P2C5 Introducción a JEE5 - II

Anot

ació

n @

One

ToO

nepublic interface OneToOne extends ... {

Class targetEntity() default void.classclase entidad a la que está relacionadausualmente se determina por el tipo de la propiedad

CascadeType[] cascade() default {}define que operaciones de persistencia se realizan en modo cascada sobre el objeto relacionado

FetchType fetch() default EAGERdefine el modo de carga del objeto relacionado

boolean optional() default truedefine si wl valor de la relación puede ser nula o no

String mappedBy() default “”usado solo en relaciones bidireccionales en el lado inverso de la relaciónseñala la propiedad remota en la clase dueña de la relación que define el mapeo a la base de datos

Page 22: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Join

Colu

mns

public interface JoinColumns extends ... {

public abstract JoinColumn[] value();define un arreglo de claves foráneas que son parte de una llave primaria compuesta

Example Usage

@OneToOne@JoinColumns({

@JoinColumn(...),@JoinColumn(...)

})

Page 23: P2C5 Introducción a JEE5 - II

Many-To-One (Muchos-a-Uno)

Page 24: P2C5 Introducción a JEE5 - II

Man

yToO

neUni-direccional

Bi-direccional

Page 25: P2C5 Introducción a JEE5 - II

Man

yToO

ne

Uni-Direcciona

l

•El lado “many “ es la unica clase (“owner”) que conoce la relación•usa

@ManyToOne•Esta clase

define el mapeo a la base de datos•Podría usar

@JoinColumn o @JoinTable

Bi-Direcciona

l

•Se requiere que el lado “many” sea el dueño de la relación

•El lado “one” (“inverse side”) señala la propiedad de la clase dueña que define la relación•Podría usar

@OneToMany(mappedBy=”remote property”)

Page 26: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Man

yToO

nepublic interface ManyToOne extends ... {

Class targetEntity() default void.classclase entidad a la que está relacionadausualmente se determina por el tipo de la propiedad

CascadeType[] cascade() default {}define que operaciones de persistencia se realizan en modo cascada sobre el objeto relacionado

FetchType fetch() default EAGERdefine el modo de carga del objeto relacionado

boolean optional() default truedefine si wl valor de la relación puede ser nula o no

Page 27: P2C5 Introducción a JEE5 - II

Anot

ació

n @

One

ToM

any

public interface OneToMany extends ... {

Class targetEntity() default void.classclase entidad a la que está relacionadausualmente se determina por el tipo de la propiedad

CascadeType[] cascade() default {}define que operaciones de persistencia se realizan en modo cascada sobre el objeto relacionado

FetchType fetch() default EAGERdefine el modo de carga del objeto relacionado

String mappedBy() default “”usado solo en relaciones bidireccionales en el lado inverso de la relaciónseñala la propiedad remota en la clase dueña de la relación que define el mapeo a la base de datos

Page 28: P2C5 Introducción a JEE5 - II

Mod

ifica

ndo

una

lista

de

obje

tos

Incorrecto

•No reemplazar la colección de un objeto administrado con otra de un objeto no administrado

•Collection<Checkout> newCheckouts = ...

•borrower.setCheckouts(newCheckouts); //ERROR!

Correcto

•Actualizar la colección existente dentro del objeto administrado

•Collection<Checkout> newCheckouts = ...

•borrower.getCheckouts().add(newCheckouts);

Page 29: P2C5 Introducción a JEE5 - II

One-To-Many (Uno-a-Muchos)

Page 30: P2C5 Introducción a JEE5 - II

One

ToM

any

Uni-direccional

Page 31: P2C5 Introducción a JEE5 - II

One

ToM

any

Uni-Direccional

• El lado “one“ es la unica clase (“owner”) que conoce la relación• usa @OneToMany

• Esta clase define el mapeo a la base de datos usando un Join (o “link”) table• Debe usar @JoinTable

Bi-Direccional

• Lo mismo que el caso bidireccional de ManyToOne

Page 32: P2C5 Introducción a JEE5 - II

Link

/Joi

n Ta

ble

Page 33: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Join

Tabl

epublic interface JoinTable extends ... {

muy similar a la anotación @Table

String name() default “”nombre de la tabla para la tabla “join”

String catalog() default “”nombre de la base de datos

String schema() default “”nombre del esquema

JoinColumn[] joinColumns() default {}arreglo de columnas que definen la clave foranea a este

objetoJoinColumn[] inverseJoinColumns() default {}

arreglo de columnas que definen la llave foráneo al objeto relacionado

UniqueConstraint[] uniqueConstraints()

Page 34: P2C5 Introducción a JEE5 - II

Many-To-Many (Muchos-a-Muchos)

Page 35: P2C5 Introducción a JEE5 - II

Man

yToM

any

Uni-direccional

Bi-direccional

Page 36: P2C5 Introducción a JEE5 - II

Man

yToM

any

Uni-Direccional

• Una clase (“owner”) conoce la relación• usa @ManyToMany

• Esta clase define el mapeo a la base de datos usando un Join (o “link”) table• usa @JoinTable

Bi-Direccional

• Ambas clases conocen la relación• Usan @ManyToMany

• El dueño de la relación define el mapeo a la base de datos• Usa @JoinTable

• El lado inverso señala la propiedad de la clase dueña que define el mapeo a la base de datos• Usa

@ManyToMany(mappedBy=«remote property»)

Page 37: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Man

yToM

any public interface ManyToMany extends ... {

Class targetEntity() default void.classclase entidad a la que está relacionadausualmente se determina por el tipo de la propiedad

CascadeType[] cascade() default {}define que operaciones de persistencia se realizan en modo cascada sobre el objeto relacionado

FetchType fetch() default EAGERdefine el modo de carga del objeto relacionado

String mappedBy() default “”usado solo en relaciones bidireccionales en el lado inverso de la relaciónseñala la propiedad remota en la clase dueña de la relación que define el mapeo a la base de datos

Page 38: P2C5 Introducción a JEE5 - II

ALL- combinación de todos los tiposPERSIST- objetos relacionados son automáticamente administrados y serán persistentes en la base de datos cuando han sido relacionado a este objetoREMOVE- objetos relacionados son eliminados de la base de datos cuando este objeto es eliminadoREFRESH- objetos relacionados traerán su “estado” de la base de datos cuando este objeto es “refrescado”MERGE- objetos relacionados actualizarán su “estado” en la base de datos cuando este objeto es actualizado

TIPOS DE CASCADA

Page 39: P2C5 Introducción a JEE5 - II

JPA contiene anotaciones que permiten mapear herencia entre clases a la base de datos.

Existen algunas estrategias para realizar esto:- Tabla Única- Tabla por Clase Concreta- Tabla por Clase (Join)

MAPEO DE HERENCIA DE OBJETOS

Page 40: P2C5 Introducción a JEE5 - II

Estr

ateg

ia d

e H

eren

cia:

Tab

la

Úni

ca

Page 41: P2C5 Introducción a JEE5 - II

Resu

men

de

la e

stra

tegi

a :

Tabl

a Ú

nica

Ventajas• El más simple a implementar.• El rendimiento de esta estrategia es mejor que las

otras estrategias.

Desventajas• Campos sin usar• Todos los campos deben aceptar nulos• No esta normalizado

Jerarquía con subtipos• Mas adecuado que en primera instancia difieren

únicamente por el comportamiento.• Mas adecuado si no se tiene requerimientos de datos

únicos

Page 42: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Dis

crim

inat

orCo

lum

npublic interface DiscriminatorColumn extends ... {

define una columna en la tabla que señala el tipo de fila

String name() default “DTYPE”Nombre de la columna que almacena el tipo de la fila

DiscriminatorType discriminatorType() default STRINGTipo de dato de la columna “name”

String columnDefinition();Definición explicita de la columna

int length()Longitud de la cadena para tipos STRING

enum DiscriminatorTypeSTRINGCHARINTEGER

Page 43: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Dis

crim

inat

orVa

lue

public interface DiscriminatorValue extends ... {Define el valor de la columna para la columna discriminadora

String value() por defectoString – nombre de la entidadCHAR – valor específicoINTEGER – valor específico

Page 44: P2C5 Introducción a JEE5 - II

Anot

ació

n @

Inhe

ritan

cepublic interface Inheritance extends ...{

InheritanceType strategy() por defecto SINGLE_TABLE

enum InheritanceTypeSINGLE_TABLE

Una tabla raiz por cada jerarquía de clasesTABLE_PER_CLASS

Una tabla por cada clase concretaJOINED

Una tabla por cada clase en la jerarquía

Page 45: P2C5 Introducción a JEE5 - II

Estr

ateg

ia d

e H

eren

cia:

Tab

la

por C

lase

Con

cret

a

Page 46: P2C5 Introducción a JEE5 - II

Resu

men

de

la e

stra

tegi

a :

Tabl

a po

r Cla

se C

oncr

eta

Ventajas • Podría tener campos nulos.• Permite restricciones definidas en la base de datos.

Desventajas• Columnas redundantes en múltiples tablas.• Requiere mas esfuerzo en la implementación• No-normalizado• Menos deseable desde el punto de vista del rendimiento y

portabilidad

Jerarquía con subtipos • Mas adecuado si that do not need to be manipulated with sibling types

Page 47: P2C5 Introducción a JEE5 - II

Estr

ateg

ia d

e H

eren

cia:

Tab

la

por S

ub-C

lase

(Joi

n)

Page 48: P2C5 Introducción a JEE5 - II

Resu

men

de

la e

stra

tegi

a :

Tabl

a po

r Sub

-Cla

se (J

oin)

Ventajas• Normalizado.• Podría tener campos nulos.• Permite restricciones definidas en la base de datos.

Desventajas • Requiere «join»

Jerarquía con subtipos• Mas adecuado si existen requerimientos de

propiedad únicas.• Mas adecuado si existen restricciones de base de

datos.• Mas aecuado si queried across sibling types

Page 49: P2C5 Introducción a JEE5 - II

Implementación de un flujo de trabajo

Interactúa con otros beans

Accede directamente a la base de datos- operaciones «bulky»

Ejemplo: Registrar Cuenta

vs. Entity Beans- representan datos compartidos en la base de datos- interactúa con datos generalmente al nivel individual de

objeto-fila- Ejemplo: Cuenta

BEANS DE SESIÓN

Page 50: P2C5 Introducción a JEE5 - II

Ejemplo de un flujo de trabajo bajo el patrón DAO

Cl i ent

User Tr ansact i on Account D AO

f romA ccountAccount

toA ccountAccount

7. 1:

6. 1:

4. 1: < const r uct or > ( )

2. 1: < const r uct or > ( )

8: com m i t ( ) : voi d

7: updat eAccount ( account : Account ) : voi d

6: updat eAccount ( account : Account ) : voi d

5: deposi t ( doubl e) : voi d

4: findAccount ( i nt ) : Account

3: w i t hdr aw ( am ount : doubl e) : voi d

2: findAccount ( i nt ) : Account

1: begi n( ) : voi d

Page 51: P2C5 Introducción a JEE5 - II

Los bean de sesión eliminan la complejidad en el flujo de trabajo en el Cliente

f rom A ccountAccount

toA ccountAccount

Cl i ent

Tel l er Account D AO

1. 7. 1:

1. 6. 1:

1. 1. 1: < const r uct or > ( )

1. 7: updat eAccount ( ) : voi d

1. 6: updat eAccount ( ) : voi d

1. 5: depos i t ( doubl e) : voi d

1. 4: < const r uct or > ( )

1. 3: findAccount ( i nt ) : Account

1. 2: w i t hdr aw ( ) : voi d

1. 1: findAccount ( i nt ) : Account

1: t r ans f er ( f r om Account : i nt , t oAccount : i nt , am ount : doubl e) : voi d

t r ansact i on i s bei ng done by t he EJ BCont ai ner i n t hi s exam pl e

Page 52: P2C5 Introducción a JEE5 - II

Bean

s de

Ses

ión

Stat

eles

s/St

atef

ul

Stateless

• No mantiene un estado de conversación.• Cada método ignora que sucedió antes y lo que

sucederá después.• Mantiene un estado de implementación.

• Se comparte entre invocaciones de clientes por separado.

• Un conjunto de procedimientos o un batch de comandos que toman un conjunto de parámetros y retorna un resultado.

• El mas “económico” de implementar, desplegar y escalar.

Stateful

• Mantiene un estado de conversación.• El objeto puede acceder a los valores en caché en

distintas invocaciones• Mantiene un estado de implementación.

• No se comparte entre invocaciones de clientes/objetos por separado.• Los recursos son ubicados para realizar el

trabajo de una única instancia de bean de sesión Stateful. Esa instancia está atada al estado del cliente.

• Capaz de reaccionar a los estados de transacción• p.e. publica un mensaje de error en una

transacción rollback.

Page 53: P2C5 Introducción a JEE5 - II

JSF pone a disposición del web-master una herramienta muy útil para la conversión de datos entre la vista y el bean administrado

Y como todo en Java, existen casos cuando uno necesita su «converter» personalizados. JSF ofrece un marco de trabajo para el desarrollo de «custom converters»

JSF tiene un mecanismo de validación de datos, el cual ocurre antes que los datos del componente GUI actualicen el modelo en el bean administrado

CONVERTER Y VALIDATOR

Page 54: P2C5 Introducción a JEE5 - II

Mod

elo

de C

onve

rsió

n

Vistas del Componente GUI• Vista del Modelo

• en el cual los datos son representados como tipos de datos (int, long, double).

• Vista de la Presentación• en el cual los datos son representados de tal manera que el usuario pueda

leerlos y/o modificarlos (java.util.date, ‘dd/mm/yyyy’).

Lo usual• JSF automáticamente convierte los datos del componente entre estas dos

vistas cuando la el tipo de datos de la propiedad del bean administrado asociado al componente es del tipo de dato soportado por el componente.

Que sucede si … ?• Cuando queremos mostrar datos que no son estándares, la

tecnologia JSF nos permite registrar un Converter personalizado para ese tipo de dato.

Page 55: P2C5 Introducción a JEE5 - II

Paso

s pa

ra c

rear

un Co

nverter

El desarrollador de aplicaciones debe

implementar la clase Converter en

una clase CustomConverter.

El arquitecto de la aplicacion debe

registrar el Converter en el

faces-config.xml.

El autor HTML debe hacer

referencia desde los componentes

GUI hacia el CustomConverter.

Page 56: P2C5 Introducción a JEE5 - II

Converters de JSFBigDecimalConverterBigIntegerConverterBooleanConverterByteConverterCharacterConverterDateTimeConverterDoubleConverterFloatConverterIntegerConverterLongConverterNumberConverterShortConverter

Todos estos Converters tienen un error asociado a ellos, de tal forma que de no pasar la conversión, el error se visualizará en la pagina.

DateTimeConverter y NumberConverter tienen sus propias etiquetas, esto nos dice que podemos configurar el formato de los datos del componente a través de los atributos de la etiqueta.

Page 57: P2C5 Introducción a JEE5 - II

Mod

elo

de V

alid

ació

n

Métodos de Validación• Implementar la interfaz Validator que realiza la validación• Implementar un método de validación en el bean administrado

Lo usual• JSF provee un conjunto de Validadores estándares para que el Autor

HTML los inserte en las paginas web, éstos ya están listo para utilizarse.

Page 58: P2C5 Introducción a JEE5 - II

LongRange Validator

Nótese que existe un mensaje enlazado a la caja de texto, el cual capturará los mensajes de error que se disparen.

Nótese que los valores máximo y mínimo del validador se pueden enlazar a propiedades de un bean administrado.

Page 59: P2C5 Introducción a JEE5 - II

3 Resumen

Page 60: P2C5 Introducción a JEE5 - II

» Esta es la arquitectura de desarrollo que debemos respetar desde el inicio de la implementación hasta el despliegue de una aplicación empresarial.

» Esta clase ha tocado las 3 capas de las 5 propuestas. ¿Cuales son estas 3 capas?

RESUMEN

Session Beans Seguridad

Entidades del Negocio

EJB

Controladores Delegados

Archivos de Configuración

WAR

WAR

Interfaces de Usuario

Componentes GUI Personalizados

Richfaces 3.x

My F

aces 1.7

Java Mail

utilitarios

EAR

Page 61: P2C5 Introducción a JEE5 - II

» Lados de una relación» Lado dueño e inverso

» Tipos de relación» OneToOne

» Unidireccional, Bidireccional» ManyToOne

» Unidireccional, Bidireccional» OneToMany

» Unidireccional (bidireccional igual que en ManyToOne)» ManyToMany

» Unidireccional, Bidireccional» Tipos de colección

» Collection, List, Set, Map» Tipo de Carga (Fetch)

» EAGER y LAZY» Tipo de Cascada

» ALL, PERSIST, REMOVE, MERGE, REFRESH

RESUMEN

Page 62: P2C5 Introducción a JEE5 - II

» Estrategias de Herencia» Única Tabla por Herencia de Clases

» Simple, rápido, no-normalizado, sin restricciones en base de datos» Tabla por Clase Concreta

» No-normalizado, difícil de manejar polifórmicamente.» Menos portabilidad entre gestores de bases de datos

» Tabla por Sub-Clase (Join)» Normalizado, capaz de definir restricciones

» Converter y Validator» Una de las más grandes ventajas de la tecnología de Java Server Faces es que ofrece un

conjunto de componentes que nos permiten concentrarnos en el proceso de desarrollo.» Más aún, nos permite reutilizar sus interfaces de tal forma que podemos crear componentes

personalizados.

RESUMEN

Page 63: P2C5 Introducción a JEE5 - II

GRACIAS

Page 64: P2C5 Introducción a JEE5 - II

O también puedes encontrarla

en .

Saludos!

AULA VIRTUALEncuentra esta presentación en el