SlideShare une entreprise Scribd logo
1  sur  64
Aurelio Martín Obando Távara aot@upnorte.edu.pe proyectos iiINTRODUCCIÓN A JEE5 – PARTE II
EnalteciendoLos Temas 1 3 2 1 Entidades Converter y Validator Beans de Sesión
AGENDA EntidadesBeans de SesiónConverter y ValidatorResumen Clase 05 1
2 CONTENIDO
	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
	Toda entidad debe tener una llave primariaPuede mapearse a una (llave primaria simple) o más (llave primaria compuesta) propiedades Consiste de múltiples llaves primarias simples LAVES PRIMARIAS COMPUESTAS
Consiste de múltiples llaves primarias Puede ser representada por un clase “Primary Key” que… debe ser Serializable publicclassMowerPKimplementsjava.io.Serializable { debe tener un constructor público sin paso de parámetros publicMowerPK() { … } debe implementar los métodos equals() y hashCode() publicinthashCode() { ... } publicbooleanequals(Objectobj) { ... } LlavesPrimariasCompuestas
No es usada internamente por clases persistentes Usado por el EntityManager 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) 		) Usando una Clase Primary Key como un IdClass
packageejava.examples.orm.core; importjava.io.Serializable; publicclassMowerPKimplementsSerializable { privatestatic final longserialVersionUID = 1L; privateStringmake; privateStringmodel; publicMowerPK() { … } publicMowerPK(Stringmake, Stringmodel) { this.make = make; this.model = model;     } publicstaticlonggetSerialVersionUID() { returnserialVersionUID;     } publicStringgetMake() { returnmake;     } privatevoidsetMake(Stringmake) { this.make = make;     } … Ejemplo de Clase Compuesta PK
… publicStringgetModel() { returnmodel;     } privatevoidsetModel(Stringmodel) { this.model = model;     } publicinthashCode() { returnmake.hashCode() + model.hashCode();     } publicbooleanequals(Objectobj) {         try { if (this == obj) return true; returnmake.equals(((MowerPK)obj).getMake()) && model.equals(((MowerPK)obj).getModel());         } catch (Throwableignored) {  return false;         }     }     publicStringtoString() { returnsuper.toString() + ", make=" + make+ ", model=" + model;     } } Ejemplo de Clase Compuesta PK (Cont.)
packageejava.examples.orm.core.annotated; importjava.io.Serializable; importjavax.persistence.*; importejava.examples.orm.core.MowerPK; @Entity @Table(name="MOWER") @IdClass(MowerPK.class) publicclassMowerimplementsSerializable { privatestatic final longserialVersionUID = 1L; privateStringmake; privateStringmodel;     privateintsize; publicMower() { … } publicMower(Stringmake, Stringmodel) { this.make = make; this.model = model; } … Ejemplo de uso de un IdClass
… @Id     @Column(nullable=false, updatable=false) publicStringgetMake() { returnmake;     } privatevoidsetMake(Stringmake) { this.make = make;     } @Id     @Column(nullable=false, updatable=false) publicStringgetModel() { returnmodel;     } privatevoidsetModel(Stringmodel) { this.model = model;     } publicintgetSize() { returnsize;     } publicvoidsetSize(intsize) { this.size = size; } } Ejemplo de uso de un IdClass(Cont.)
Esquemade 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) ) Usando un clase Primary Key como un EmbeddedId
package ejava.examples.orm.core.annotated; import java.io.Serializable; import javax.persistence.*; @Embeddable public class NapsackPKimplements 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;     } … Ejemplo de EmbeddedId
@Column(name="NAPSACK_MODEL")     public String getModel() {         return model;     }     public void setModel(String model) { this.model = model;     }     public inthashCode() {         return make.hashCode() + model.hashCode(); }     public booleanequals(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; } } Ejemplo de EmbeddedId(Cont.)
package 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 NapsackPKpk;     private int size;     public Napsack() {}     public Napsack(String make, String model) {         this.pk = new NapsackPK(make, model);     } @EmbeddedId     public NapsackPKgetPk() {         return pk;     }     public void setPk(NapsackPKpk) {         this.pk = pk;     }     … } Ejemplo de uso de EmbeddedIdusando Anotaciones
	JPA reconoce y mapea las relaciones en el modelo de datos relacional y lo translada a las clases en el modelo de dominioDe 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 JPAEstas 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
One-To-One (Uno-a-Uno)
Uni-direccional Bi-direccional OneToOne
OneToOne
public interface OneToOne extends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} 	define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER 	define el modo de carga del objetorelacionado boolean optional() default true 	define siwl valor de la relaciónpuedesernula o no String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso 	de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @OneToOne
public interface JoinColumns extends ... { public abstract JoinColumn[] value(); define un arreglo de claves foráneasque son parte de unallaveprimariacompuesta Example Usage @OneToOne 	@JoinColumns({ 		@JoinColumn(...), 		@JoinColumn(...) 	}) Anotación @JoinColumns
Many-To-One (Muchos-a-Uno)
Uni-direccional Bi-direccional ManyToOne
ManyToOne
public interface ManyToOneextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} 	define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER 	define el modo de carga del objetorelacionado boolean optional() default true 	define siwl valor de la relaciónpuedesernula o no Anotación @ManyToOne
public interface OneToManyextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} 	define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER 	define el modo de carga del objetorelacionado String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso 	de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @OneToMany
Modificando una lista de objetos
One-To-Many (Uno-a-Muchos)
Uni-direccional OneToMany
OneToMany
Link/JoinTable
public interface JoinTable extends ... { muy similar a la anotación @Table String name() default “” nombre de la tablapara la tabla “join” String catalog() default “” nombre de la base de datos String schema() default “” nombre del esquema JoinColumn[] joinColumns() default {} arreglo de columnasquedefinen la clave foranea a esteobjeto JoinColumn[] inverseJoinColumns() default {} arreglo de columnasquedefinen la llaveforáneo al objetorelacionado UniqueConstraint[] uniqueConstraints() Anotación @JoinTable
Many-To-Many (Muchos-a-Muchos)
Uni-direccional Bi-direccional ManyToMany
ManyToMany
public interface ManyToManyextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} 	define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER 	define el modo de carga del objetorelacionado String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso 	de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @ManyToMany
ALL- combinación de todos los tiposPERSIST- objetosrelacionados son automáticamenteadministrados y seránpersistentes en la base de datoscuandohansidorelacionado a esteobjetoREMOVE- objetosrelacionados son eliminados de la base de datoscuandoesteobjetoeseliminadoREFRESH- objetosrelacionadostraeránsu “estado” de la base de datoscuandoesteobjetoes “refrescado”MERGE- objetosrelacionadosactualizaránsu “estado” en la base de datoscuandoesteobjetoesactualizado TIPOS DE CASCADA
	JPA contiene anotaciones que permiten mapear herencia entre clases a la base de datos.Existen algunas estrategias para realizar esto:- TablaÚnica- TablaporClaseConcreta- TablaporClase(Join) MAPEO DE HERENCIA DE OBJETOS
Estrategia de Herencia: Tabla Única
Resumen de la estrategia : Tabla Única
public interface DiscriminatorColumn extends ... { define unacolumna en la tablaqueseñala el tipo de fila String name() default “DTYPE” Nombre de la columnaquealmacena el tipo de la fila DiscriminatorTypediscriminatorType() default STRING Tipo de dato de la columna “name” String columnDefinition(); Definiciónexplicita de la columna int length() Longitud de la cadenaparatipos STRING enumDiscriminatorType STRING CHAR INTEGER Anotación @DiscriminatorColumn
public interface DiscriminatorValue extends ... { Define el valor de la columnapara la columnadiscriminadora String value() pordefecto String 	– 	nombre de la entidad CHAR 	– 	valorespecífico INTEGER 	– 	valorespecífico Anotación @DiscriminatorValue
public interface Inheritance extends ...{ InheritanceTypestrategy() pordefectoSINGLE_TABLE enumInheritanceType SINGLE_TABLE Unatablaraizporcadajerarquía de clases TABLE_PER_CLASS Unatablaporcadaclaseconcreta JOINED Unatablaporcadaclase en la jerarquía Anotación @Inheritance
Estrategia de Herencia: Tabla por Clase Concreta
Resumen de la estrategia : Tabla por Clase Concreta
Estrategia de Herencia: Tabla por Sub-Clase (Join)
Resumen de la estrategia : Tabla por Sub-Clase (Join)
	Implementación de un flujo de trabajoInteractúa con otros beansAccede directamente a la base de datos- operaciones «bulky»Ejemplo: Registrar Cuentavs. EntityBeans- 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
Ejemplo de un flujo de trabajo bajo el patrón DAO
Los bean de sesión eliminan la complejidad en el flujo de trabajo en el Cliente
Beans de Sesión Stateless/Stateful
	JSF pone a disposición del web-master una herramienta muy útil para la conversión de datos entre la vista y el bean administradoY como todo en Java, existen casos cuando uno necesita su «converter» personalizados. JSF ofrece un marco de trabajo para el desarrollo de «customconverters»JSF tiene un mecanismo de validación de datos, el cual ocurre antes que los datos del componente GUI actualicen el modelo en el beanadministrado CONVERTER Y VALIDATOR
Modelo de Conversión
Pasos para crear un Converter
Converters de JSF BigDecimalConverter BigIntegerConverter BooleanConverter ByteConverter CharacterConverter DateTimeConverter DoubleConverter FloatConverter IntegerConverter LongConverter NumberConverter ShortConverter TodosestosConverterstienen 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.
Modelo de Validación
LongRangeValidator 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.
3 Resumen
WAR Interfaces de Usuario Componentes GUI Personalizados EAR EJB WAR Richfaces 3.x My Faces 1.7 Java Mail Archivos de Configuración Controladores Delegados utilitarios Entidades del Negocio SessionBeans Seguridad RESUMEN ,[object Object]
Esta clase ha tocado las 3 capas de las 5 propuestas. ¿Cuales son estas 3 capas?,[object Object]
Lado dueño e inverso
Tipos de relación
OneToOne

Contenu connexe

Tendances

4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuarioLaura Folgado Galache
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
2.android java
2.android   java2.android   java
2.android javaguidotic
 
Leccion 04 plataforma java operadores especiales prototipos paso por refere...
Leccion 04   plataforma java operadores especiales prototipos paso por refere...Leccion 04   plataforma java operadores especiales prototipos paso por refere...
Leccion 04 plataforma java operadores especiales prototipos paso por refere...letm
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignacionesjorg_marq
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosPatricio Abad
 

Tendances (20)

4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
P1C5 Lenguaje de Expresiones
P1C5 Lenguaje de ExpresionesP1C5 Lenguaje de Expresiones
P1C5 Lenguaje de Expresiones
 
Sql dataadapter
Sql dataadapterSql dataadapter
Sql dataadapter
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
03 action forms
03 action forms03 action forms
03 action forms
 
Guia poo
Guia pooGuia poo
Guia poo
 
Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
 
53 Php. Clases Y Objetos
53 Php. Clases Y Objetos53 Php. Clases Y Objetos
53 Php. Clases Y Objetos
 
2.android java
2.android   java2.android   java
2.android java
 
2 f programas
2 f programas2 f programas
2 f programas
 
Leccion 04 plataforma java operadores especiales prototipos paso por refere...
Leccion 04   plataforma java operadores especiales prototipos paso por refere...Leccion 04   plataforma java operadores especiales prototipos paso por refere...
Leccion 04 plataforma java operadores especiales prototipos paso por refere...
 
Clase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScriptClase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScript
 
4 manejo de_metodos
4 manejo de_metodos4 manejo de_metodos
4 manejo de_metodos
 
Metodos 2
Metodos 2Metodos 2
Metodos 2
 
Clase 6 objetos de javaScript
Clase 6 objetos de javaScriptClase 6 objetos de javaScript
Clase 6 objetos de javaScript
 
Guia poo
Guia pooGuia poo
Guia poo
 
Capítulo 04 objetos fijos
Capítulo 04 objetos fijosCapítulo 04 objetos fijos
Capítulo 04 objetos fijos
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
 

En vedette

Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datosYiber
 
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)Ing-D-SW-TorresKhano--ME
 
Mapa Conceptual
Mapa ConceptualMapa Conceptual
Mapa Conceptuallukapegue
 
Creación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yogCreación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yogJair Ospino Ardila
 

En vedette (6)

Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datos
 
Sql básico - compendio
Sql básico  - compendioSql básico  - compendio
Sql básico - compendio
 
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)
CREANDO Y MANIPULANDO UNA BASE DE DATOS (MySQL)
 
Mapa Conceptual
Mapa ConceptualMapa Conceptual
Mapa Conceptual
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Creación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yogCreación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yog
 

Similaire à P2C5 Introducción a JEE5 - II

Similaire à P2C5 Introducción a JEE5 - II (20)

Persistencia avanzada de datos en Java. JPA
Persistencia avanzada de datos en Java. JPAPersistencia avanzada de datos en Java. JPA
Persistencia avanzada de datos en Java. JPA
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Clase 2
Clase 2 Clase 2
Clase 2
 
Explicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdfExplicacion de la Clase en Java-MySQL.pdf
Explicacion de la Clase en Java-MySQL.pdf
 
Guia7 java
Guia7 javaGuia7 java
Guia7 java
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
[ES] Manejadores de persistencia
[ES] Manejadores  de persistencia[ES] Manejadores  de persistencia
[ES] Manejadores de persistencia
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Carro De Compras
Carro De ComprasCarro De Compras
Carro De Compras
 
Java con-base-datos
Java con-base-datosJava con-base-datos
Java con-base-datos
 
S8-POO-4.2 BDD
S8-POO-4.2 BDDS8-POO-4.2 BDD
S8-POO-4.2 BDD
 
Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0Clase 21 programacion ejb 3.0
Clase 21 programacion ejb 3.0
 
Jpa
JpaJpa
Jpa
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2
 
Best Practices
Best PracticesBest Practices
Best Practices
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 
S8-BDD
S8-BDDS8-BDD
S8-BDD
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 

Plus de Aurelio Martín Obando Távara (12)

Configuracion del Entorno
Configuracion del EntornoConfiguracion del Entorno
Configuracion del Entorno
 
Descripción y fuentes de excepciones comunes
Descripción y fuentes de excepciones comunesDescripción y fuentes de excepciones comunes
Descripción y fuentes de excepciones comunes
 
Gestión de Excepciones
Gestión de ExcepcionesGestión de Excepciones
Gestión de Excepciones
 
JEE y Tomcat
JEE y TomcatJEE y Tomcat
JEE y Tomcat
 
P1C4 Criterios De Evaluación - T1
P1C4 Criterios De Evaluación - T1P1C4 Criterios De Evaluación - T1
P1C4 Criterios De Evaluación - T1
 
P1C3 Etiquetas JavaServer Faces al detalle
P1C3 Etiquetas JavaServer Faces al detalleP1C3 Etiquetas JavaServer Faces al detalle
P1C3 Etiquetas JavaServer Faces al detalle
 
Etiquetas JavaServer Faces
Etiquetas JavaServer FacesEtiquetas JavaServer Faces
Etiquetas JavaServer Faces
 
Datatable Y Column
Datatable Y ColumnDatatable Y Column
Datatable Y Column
 
P1C3 Anotaciones
P1C3 AnotacionesP1C3 Anotaciones
P1C3 Anotaciones
 
P1C2 Navegación y Parámetros
P1C2 Navegación y ParámetrosP1C2 Navegación y Parámetros
P1C2 Navegación y Parámetros
 
P2C1 - Configuración del Entorno
P2C1 - Configuración del EntornoP2C1 - Configuración del Entorno
P2C1 - Configuración del Entorno
 
P1C1 - Java Server Faces 2.0
P1C1 - Java Server Faces 2.0P1C1 - Java Server Faces 2.0
P1C1 - Java Server Faces 2.0
 

Dernier

LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 

Dernier (20)

LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 

P2C5 Introducción a JEE5 - II

  • 1. Aurelio Martín Obando Távara aot@upnorte.edu.pe proyectos iiINTRODUCCIÓN A JEE5 – PARTE II
  • 2. EnalteciendoLos Temas 1 3 2 1 Entidades Converter y Validator Beans de Sesión
  • 3. AGENDA EntidadesBeans de SesiónConverter y ValidatorResumen Clase 05 1
  • 5. 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
  • 6. Toda entidad debe tener una llave primariaPuede mapearse a una (llave primaria simple) o más (llave primaria compuesta) propiedades Consiste de múltiples llaves primarias simples LAVES PRIMARIAS COMPUESTAS
  • 7. Consiste de múltiples llaves primarias Puede ser representada por un clase “Primary Key” que… debe ser Serializable publicclassMowerPKimplementsjava.io.Serializable { debe tener un constructor público sin paso de parámetros publicMowerPK() { … } debe implementar los métodos equals() y hashCode() publicinthashCode() { ... } publicbooleanequals(Objectobj) { ... } LlavesPrimariasCompuestas
  • 8. No es usada internamente por clases persistentes Usado por el EntityManager 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) ) Usando una Clase Primary Key como un IdClass
  • 9. packageejava.examples.orm.core; importjava.io.Serializable; publicclassMowerPKimplementsSerializable { privatestatic final longserialVersionUID = 1L; privateStringmake; privateStringmodel; publicMowerPK() { … } publicMowerPK(Stringmake, Stringmodel) { this.make = make; this.model = model; } publicstaticlonggetSerialVersionUID() { returnserialVersionUID; } publicStringgetMake() { returnmake; } privatevoidsetMake(Stringmake) { this.make = make; } … Ejemplo de Clase Compuesta PK
  • 10. … publicStringgetModel() { returnmodel; } privatevoidsetModel(Stringmodel) { this.model = model; } publicinthashCode() { returnmake.hashCode() + model.hashCode(); } publicbooleanequals(Objectobj) { try { if (this == obj) return true; returnmake.equals(((MowerPK)obj).getMake()) && model.equals(((MowerPK)obj).getModel()); } catch (Throwableignored) { return false; } } publicStringtoString() { returnsuper.toString() + ", make=" + make+ ", model=" + model; } } Ejemplo de Clase Compuesta PK (Cont.)
  • 11. packageejava.examples.orm.core.annotated; importjava.io.Serializable; importjavax.persistence.*; importejava.examples.orm.core.MowerPK; @Entity @Table(name="MOWER") @IdClass(MowerPK.class) publicclassMowerimplementsSerializable { privatestatic final longserialVersionUID = 1L; privateStringmake; privateStringmodel; privateintsize; publicMower() { … } publicMower(Stringmake, Stringmodel) { this.make = make; this.model = model; } … Ejemplo de uso de un IdClass
  • 12. … @Id @Column(nullable=false, updatable=false) publicStringgetMake() { returnmake; } privatevoidsetMake(Stringmake) { this.make = make; } @Id @Column(nullable=false, updatable=false) publicStringgetModel() { returnmodel; } privatevoidsetModel(Stringmodel) { this.model = model; } publicintgetSize() { returnsize; } publicvoidsetSize(intsize) { this.size = size; } } Ejemplo de uso de un IdClass(Cont.)
  • 13. Esquemade 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) ) Usando un clase Primary Key como un EmbeddedId
  • 14. package ejava.examples.orm.core.annotated; import java.io.Serializable; import javax.persistence.*; @Embeddable public class NapsackPKimplements 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; } … Ejemplo de EmbeddedId
  • 15. @Column(name="NAPSACK_MODEL") public String getModel() { return model; } public void setModel(String model) { this.model = model; } public inthashCode() { return make.hashCode() + model.hashCode(); } public booleanequals(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; } } Ejemplo de EmbeddedId(Cont.)
  • 16. package 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 NapsackPKpk; private int size; public Napsack() {} public Napsack(String make, String model) { this.pk = new NapsackPK(make, model); } @EmbeddedId public NapsackPKgetPk() { return pk; } public void setPk(NapsackPKpk) { this.pk = pk; } … } Ejemplo de uso de EmbeddedIdusando Anotaciones
  • 17. JPA reconoce y mapea las relaciones en el modelo de datos relacional y lo translada a las clases en el modelo de dominioDe 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 JPAEstas 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
  • 21. public interface OneToOne extends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER define el modo de carga del objetorelacionado boolean optional() default true define siwl valor de la relaciónpuedesernula o no String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @OneToOne
  • 22. public interface JoinColumns extends ... { public abstract JoinColumn[] value(); define un arreglo de claves foráneasque son parte de unallaveprimariacompuesta Example Usage @OneToOne @JoinColumns({ @JoinColumn(...), @JoinColumn(...) }) Anotación @JoinColumns
  • 26. public interface ManyToOneextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER define el modo de carga del objetorelacionado boolean optional() default true define siwl valor de la relaciónpuedesernula o no Anotación @ManyToOne
  • 27. public interface OneToManyextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER define el modo de carga del objetorelacionado String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @OneToMany
  • 28. Modificando una lista de objetos
  • 33. public interface JoinTable extends ... { muy similar a la anotación @Table String name() default “” nombre de la tablapara la tabla “join” String catalog() default “” nombre de la base de datos String schema() default “” nombre del esquema JoinColumn[] joinColumns() default {} arreglo de columnasquedefinen la clave foranea a esteobjeto JoinColumn[] inverseJoinColumns() default {} arreglo de columnasquedefinen la llaveforáneo al objetorelacionado UniqueConstraint[] uniqueConstraints() Anotación @JoinTable
  • 37. public interface ManyToManyextends ... { Class targetEntity() default void.class claseentidad a la queestárelacionada usualmente se determinapor el tipo de la propiedad CascadeType[] cascade() default {} define queoperaciones de persistencia se realizan en modocascadasobre el objetorelacionado FetchType fetch() default EAGER define el modo de carga del objetorelacionado String mappedBy() default “” usado solo en relacionesbidireccionales en el ladoinverso de la relación señala la propiedadremota en la clasedueña de la relaciónque define el mapeo a la base de datos Anotación @ManyToMany
  • 38. ALL- combinación de todos los tiposPERSIST- objetosrelacionados son automáticamenteadministrados y seránpersistentes en la base de datoscuandohansidorelacionado a esteobjetoREMOVE- objetosrelacionados son eliminados de la base de datoscuandoesteobjetoeseliminadoREFRESH- objetosrelacionadostraeránsu “estado” de la base de datoscuandoesteobjetoes “refrescado”MERGE- objetosrelacionadosactualizaránsu “estado” en la base de datoscuandoesteobjetoesactualizado TIPOS DE CASCADA
  • 39. JPA contiene anotaciones que permiten mapear herencia entre clases a la base de datos.Existen algunas estrategias para realizar esto:- TablaÚnica- TablaporClaseConcreta- TablaporClase(Join) MAPEO DE HERENCIA DE OBJETOS
  • 40. Estrategia de Herencia: Tabla Única
  • 41. Resumen de la estrategia : Tabla Única
  • 42. public interface DiscriminatorColumn extends ... { define unacolumna en la tablaqueseñala el tipo de fila String name() default “DTYPE” Nombre de la columnaquealmacena el tipo de la fila DiscriminatorTypediscriminatorType() default STRING Tipo de dato de la columna “name” String columnDefinition(); Definiciónexplicita de la columna int length() Longitud de la cadenaparatipos STRING enumDiscriminatorType STRING CHAR INTEGER Anotación @DiscriminatorColumn
  • 43. public interface DiscriminatorValue extends ... { Define el valor de la columnapara la columnadiscriminadora String value() pordefecto String – nombre de la entidad CHAR – valorespecífico INTEGER – valorespecífico Anotación @DiscriminatorValue
  • 44. public interface Inheritance extends ...{ InheritanceTypestrategy() pordefectoSINGLE_TABLE enumInheritanceType SINGLE_TABLE Unatablaraizporcadajerarquía de clases TABLE_PER_CLASS Unatablaporcadaclaseconcreta JOINED Unatablaporcadaclase en la jerarquía Anotación @Inheritance
  • 45. Estrategia de Herencia: Tabla por Clase Concreta
  • 46. Resumen de la estrategia : Tabla por Clase Concreta
  • 47. Estrategia de Herencia: Tabla por Sub-Clase (Join)
  • 48. Resumen de la estrategia : Tabla por Sub-Clase (Join)
  • 49. Implementación de un flujo de trabajoInteractúa con otros beansAccede directamente a la base de datos- operaciones «bulky»Ejemplo: Registrar Cuentavs. EntityBeans- 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
  • 50. Ejemplo de un flujo de trabajo bajo el patrón DAO
  • 51. Los bean de sesión eliminan la complejidad en el flujo de trabajo en el Cliente
  • 52. Beans de Sesión Stateless/Stateful
  • 53. JSF pone a disposición del web-master una herramienta muy útil para la conversión de datos entre la vista y el bean administradoY como todo en Java, existen casos cuando uno necesita su «converter» personalizados. JSF ofrece un marco de trabajo para el desarrollo de «customconverters»JSF tiene un mecanismo de validación de datos, el cual ocurre antes que los datos del componente GUI actualicen el modelo en el beanadministrado CONVERTER Y VALIDATOR
  • 55. Pasos para crear un Converter
  • 56. Converters de JSF BigDecimalConverter BigIntegerConverter BooleanConverter ByteConverter CharacterConverter DateTimeConverter DoubleConverter FloatConverter IntegerConverter LongConverter NumberConverter ShortConverter TodosestosConverterstienen 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.
  • 58. LongRangeValidator 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.
  • 60.
  • 61.
  • 62. Lado dueño e inverso
  • 74. Tipo de Carga (Fetch)
  • 77.
  • 78. Única Tabla por Herencia de Clases
  • 79. Simple, rápido, no-normalizado, sin restricciones en base de datos
  • 80. Tabla por Clase Concreta
  • 81. No-normalizado, difícil de manejar polifórmicamente.
  • 82. Menos portabilidad entre gestores de bases de datos
  • 84. Normalizado, capaz de definir restricciones
  • 86. 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.
  • 87.
  • 88. Encuentra esta presentación en el AULA VIRTUAL O tambiénpuedesencontrarla en . Saludos!

Notes de l'éditeur

  1. lates.