JAVA PERSISTENCE API (JPA) - Relaciones

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
JEE Entity Enterprise Beans Herencia. 2009Ing. de Sistemas II2 Herencia y Polimorfismo en Entity Beans Los Entity Beans son clases Java comunes que soportan.
Hibernate Annotations
Metodología de programación paralela
Visual Basic for Applications 3 de Mayo de Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?
Carlos Armas Roundtrip Networks Corp.. Instalar y proveer sistemas rápido! Eliminar tareas repetitivas La configuración de los sistemas tiende a la divergencia.
Empaquetado de Entity Beans
Persistencia: Entity Beans
Single Table Inheritance
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Query Direcciones SELECT Nombre, Apellido, Ciudad FROM Direcciones;
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
Combinación de varias tablas. Introducción Uso de alias en los nombres de tablas Combinación de datos de varias tablas Combinación de varios conjuntos.
Desarrollo de proyectos WEBDiseño de Interaccion Dise ñ o WEB Extraído de: Ray, K y Amy, S. (1998). Diseño interactivo. España, Anaya Multimedia.
EMPRESA Es toda persona que trabaja bajo un producto o servicio con el fin de lucrar u obtener ganancias. Se entiende por empresa al organismo social.
INTEGRIDAD, INTEGRIDAD REFERENCIAL
Nuevo sistema de alertas Gloria Guirado Departamento de formación de VCG.
Instrucciones de Estudios de física a través de Edcanvas.
Una Descripción General de Scitation Scitation es una plataforma de alojamiento en Internet a cargo del American Institute of Physics (AIP) (El Instituto.
LUIS GONZALES SÁNCHEZ RESPONSABLE PROCESO DE REGISTRO DE DNI DE ESTUDIANTES UNIDAD DE GESTIÓN EDUCATIVA LOCAL LAMAS UNIDAD EJECUTORA 305.
Visual basic Curso de Habilitación Laboral IV. ¿Qué es Visual Basic Visual Basic es uno de los tantos lenguajes de programación que podemos encontrar.
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
Nombre:Nº de Control: María del Carmen Raygoza Hernández Judith Itzel Requejo Hernández
Descarga: En la pagina principal usted podra descargar el programa Skype : DIAPOSITIVA 1 Clic para Descargar El programa Clic para Descargar El instructivo.
CONSTRUCCIÓN Y ARQUITECTURA DEL SOFTWARE
UML Lenguaje Unificado de Construcción de Modelos
Pilas Laboratorio de Programación II. Definición de pila Consideremos una pila de platos: Si se añade un plato a la pila, los que están más abajo son.
Studio7i - Alquiler de salas de ensayo musical poo-rentalmusic
Procedimientos Almacenados y Disparadores
Programación Concurrente en Java
SQL Base de Datos LENGUAJES DE CONSULTA AR y CR no pueden ser tomados como base para implementar porque: Poseen sintaxis compleja No permiten.
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.
Unidad 6: EJB 3.0 David Rodríguez 1.
Consideraciones. Un Bean public class AddressBean { //properties private String street; private String city; private String state; private String zip;
Teoría de los lenguajes Proyecto SIGU Equipo Nº3 Universidad Argentina J. F. Kennedy Sede: Don Bosco Integrantes: Irene Arias Fernández Mariana Pacheco.
Monitor de Temperatura. OBJETIVO Monitoreo de Temperatura en Salas de Computo Elaborar graficas de comportamiento Envío de Alertas.
Herramientas de Oracle para realizar Tuning de Sentencias SQL
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Overloading de subprogramas procedure Put(Item: in integer;
JAVA Persistence API (JPA)
Administración de Servidores de Bases de Datos Bases de Datos de Usuarios Caso particular Adaptive Server Enterprise.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Java Persistance API JPA.
Middleware Java 2 Enterprise Edition
RMI JAVA Implementación.
Object Relational Mapping - ORM Tutor: Ing. Juan E. Talavera Horn 2010.
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
Clases abstractas no polimórficas para C++ Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática Agenda.
Frameworks de Persistencia Java Prof. Ing. Esteban Ramírez
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Conceptualización.
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Programación Avanzada
Diseño y Programación Orientada a Objetos
Programación Orientada a Objetos
Fundamentos de la programación orientada a objetos
Prof. Daniel Obando Fuentes
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Polimorfismo y Métodos Virtuales
Herencia Agustín J. González ELO329.
Herencia en C#.
Plantillas (Templates)‏
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Herencia en C++ Agustín J. González ELO329.
Templates (en español: Pantillas, modelos, patrones)‏
Herencia Agustín J. González ELO329.
Transcripción de la presentación:

JAVA PERSISTENCE API (JPA) - Relaciones JEE 5 JAVA PERSISTENCE API (JPA) - Relaciones

Relaciones Las relaciones en JAVA son representadas como: Referecias de objetos (punteros). Coleciones de referencias de objetos. Sin diferencias a la semántica normal de referencias en Java El contenedor ”entiende” como persistir estas relaciones entre objetos. Dos colecciones principales: Sets y Listas Los Sets no aceptan duplicados. Las Listas sí aceptan duplicados. Conjunto completo de opciones: Uno-a-Uno, Uno-a-Muchos, Muchos-a-Uno, Muchos-a-Muchos. 2010 Ing. de Sistemas II

Relaciones Unidireccionales y Bidireccionales Una asociación de ”Persona” con ”Auto” es diferente a la asociación de ”Auto” a ”Persona” Si se necesita que la relación sea bidireccional, se debe mapear a la misma foreing key Útil para navegar los punteros ej: Una Factura tiene una colecció de Detalles. Algún Caso de Uso requiere a partír del Detalle conocer su Factura? Factura.getDetalles(), FacturaDetalle.getFactura() Anotaciones: @OneToOne, @OneToMany, @ManyToOne, @ManyToMany Las Relaciones son polimórficas Una colección de ”Clientes” puede contener entidades Cliente y todos sus subtipos. ej: una coleccion de entidades Cliente puede también contener ClienteVIP, ClienteGold, etc. siempre y cuando estas hereden de Cliente. 2010 Ing. de Sistemas II

Relaciones Estrategia de Carga (Fetch Strategy) La otra parte de la relación, se debe cargar completa al cargar la entidad o al momento de uso? ej: busco todas las cabecera de Factura para sumar totales... cargo la colección de DetalleFactura de c/u en memoria también? FetchType = LAZY Solo cargo la relación a ”demanda”, cuando se accede al getter. DEFAULT FetchType = EAGER Cargo siempre las relaciones al cargar la entidad principal. Importante para preservar memoria. Un componente ”detachado” no puede cargar una relación a ”demanda”. Ya no esta bajo el control del contenedor. 2010 Ing. de Sistemas II

Tipos de Clases Persistentes Value types: Poseen ciclo de vida dependiente de otra instancia Su existencia depende enteramente de su propietario No puede ser referenciada por muchas otras instancias No tiene su propio identificador en la base de datos Ejemplos: String, Date, Direccion Entity: Poseen ciclo de vida propio Existe independientemente de cualquier otra instancia Puede ser referenciada por muchas otras instancias Tiene su propio identificador en la base de datos Posee su propio valor de clave primaria Ejemplos: Producto, Cliente 2010 Ing. de Sistemas II

Mapeo de value types Los value types del JDK (ej: String, Date, etc) y los propios del sistema (ej: Dirección) pueden ser mapeados como “componentes embebidos” Las clases embebidas se anotan con @Embeddable No requieren anotación en la clase Entity (detección automática) 2010 Ing. de Sistemas II

Ejemplo componente embebido Diagrama de Clases 1 direc 1 Implementación @Entity public class Usuario { @Id @GeneratedValue private int id; private String nombre; private String apellido; private String username; private String password; private Direccion direccion; @Embeddable public class Direccion { private String calle; private String ciudad; private String codigoPostal; Tablas Datos de la Direccion Usuario 2010 Ing. de Sistemas II

Relaciones Muchos a Uno (Unidireccional) Diagrama de Clases 1 auto * Implementación @Entity public class Auto { @Id @GeneratedValue private int id; private String modelo; private String marca; @Entity public class Persona { @Id @GeneratedValue private int id; private String nombre; private String apellido; @ManyToOne @JoinColumn(name="autoId") private Auto auto; Tablas JoinColumn Auto Persona 2010 Ing. de Sistemas II

Ejemplo de Relaciones Uno A Muchos y Muchos a Uno @Entity public class Factura implements Serializable { … private Collection<DetalleFactura> detalles = new HashSet<DetalleFactura>(3); @Id @GeneratedValue(strategy = GenerationType. AUTO) public long getId() { return id; } public void setId(long id) { … } public TipoFactura getTipoFactura() { ... @OneToMany (mappedBy = “factura”) public Collection<DetalleFactura> getDetalles() { return detalles; } public void setDetalles(Collection<DetalleFactura> d) { this. detalles = d; DetalleFactura va a mantener la columna que actua de FK. El valor de esa FK se va a guardar en DetalleFactura.factura 2010 Ing. de Sistemas II

Ejemplo de Relaciones Mapeo por defecto Relacion bidireccional, con una FK del lado que ”mantiene” la relacionmappedBy @Entity public class DetalleFactura implements Serializable { private int id; private String descripcion; private Factura factura; ... @ManyToOne public Factura getFactura() { return factura; } public void setFactura(Factura fact) { this. factura = fact; Id TipoFact Id Desc FK 1 A 1 ProdA 1 2 B 2 ProdB 1 3 B 3 ProdC 3 Factura DetalleFactura 2010 Ing. de Sistemas II

Cargar esta relación a ”demanda”, recién cuando se acceda al getter Estrategia de Carga @Entity public class Factura implements Serializable { … private Collection<DetalleFactura> detalles = new HashSet<DetalleFactura>(3); @Id (generate = GeneratorType.AUTO) public long getId() { return id; } public void setId(long id) { … } public TipoFactura getTipoFactura() { ... @OneToMany (mappedBy = “factura”, fetch=FetchType.LAZY) public Collection<DetalleFactura> getDetalles() { return detalles; } public void setDetalles(Collection<DetalleFactura> d) { this. detalles = d; Cargar esta relación a ”demanda”, recién cuando se acceda al getter 2010 Ing. de Sistemas II

Persistencia Transitiva: ”Cascada” Se puede habilitar persistencia transitiva con las opciones de CASCADA sobre las asociaciones mapeadas. El desarrollador crea los objetos y mantiene todas las asociaciones Se puede configurar diferentes operaciones en cascada, según la configuración en la propiedad Factura.detalles Persistiendo la Factura, se persisten los detalles (CascadeType.PERSIST) Actualizando la factura, se actualizan los detalles (CascadeType.MERGE) Eliminando la Factura, se eliminan los detalles (CascadeType.REMOVE) Se aplican todos los cambios (CascadeType.ALL) @Entity public class Factura implements Serializable { ... @OneToMany (mappedBy = “factura”, fetch=FetchType.LAZY, cascade={CascadeType.ALL}) public Collection<DetalleFactura> getDetalles() { return detalles; } public void setDetalles(Collection<DetallesFactura> d) { this.detalles = d; public void agregarDetalle(DetalleFactura detalle) { this.detalles.add(detalle); detalle.setFactura(this); 2009 Ing. de Sistemas II