Las aplicaciones requieren datos persistentes

Slides:



Advertisements
Presentaciones similares
2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
Advertisements

Diseño de Bases de Datos
Posicionamiento Web Primera Parte: Estructura de una Página Web y Metadatos Lluís Codina UPF IDEC 2010.
Introducción a HIBERNATE
Rocío Contreras Águila Primer Semestre 2010
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
Introducción a LAS Bases de Datos
Español 1 -- Capítulo 4 - Segundo Paso
¿QUÉ SON LAS BASES DE DATOS?
DISEÑO Y GESTIÓN DE BASES DE DATOS Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca INTRODUCCIÓN.
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
INTELIGENCIA ARTIFICIAL
Curso de Diseño y Construcción de Productos de Software CLASE 2
Diseño del Esquema de BD
Lenguaje de consulta de Hibernate
ADO.Net TGP (Tecnología de la Programación)
Sistema de Gestión de Base de Datos
Oracle, orientado a objetos
Base de Datos Relacional.
UNIDAD II Modelo de Datos.
JAVA Persistence API (JPA)
Programación por capas: Capa de Clases
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a Base de Datos Conceptos básicos.
29/01/031 SISTEMAS ORIENTADOS A OBJETOS PROBLEMÁTICA DE PERSISTENCIA Víctor Anaya Mayte Redolar Laboratorio de Sistemas de Información Facultad de Informática.
Geometría Analítica en el Espacio
UNIDAD I Conceptos Básicos.
MÓDULO II: FUNDAMENTOS DE BASE DE DATOS
BASE DE DATOS I Clase # 1.
DISEÑO Genera soluciones a requerimientos planteados
ESTRUCTURA DE DATOS EN JAVA
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Sistemas de Información IS95872
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
BASE DE DATOS BY: Julián Villar Vázquez.
Colegio de Bachilleres Plantel 13 Xochimilco-Tepepan Integrantes: Karen Elizabeth González Monroy Elizabeth De Jesús Vergara Grupo:308.
Mapeo Objeto – Relacional JPA – Java Persistence Api
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
Tema 2: Base de datos relacionales
CICLO DE VIDA Y NORMAALIZACION DE UN SISTEMA DE BASE DE DATOS
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Programación Orientada a Objeto
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Mapeo de Estructuras XML a Bases de Datos Relacionales
Programación orientada a objetos
Diseño de una base de datos y elementos básicos Integrantes: López Ponce de León José Efrén Velazquez Martínez Brenda Equipo:10Grupo:307.
Ingeniería de Requisitos
MODELOS DE DATOS RELACIONAL
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Base de datos Sakani Orea-Ortega, S., Ramos-Romero, E., Tomas-Vicencio, G. Universidad Tecnológica de Izúcar de Matamoros. Prol. Reforma No Barrio.
Base de Datos.
Normalización Prof. Gloria Toro Oñate
Bases de Datos Modelo Relacional.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
MIA - Grupo 5 Unidad 2.
Acceso a Datos Erick López Ovando Licenciado en Informática.
FUNDAMENTOS INFORMÁTICOS
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
DISEÑO DE BASES DE DATOS (modelos para el diseño)
Diagrama de Clases.
Diccionario/Directorio de Datos
BASES DE DATOS CONCEPTOS BASICOS Elizabeth Maite Zarate Machaca “El tratamiento eficiente de la información al servicio del usuario”
¿Qué es una base de datos? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Desde.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Normalización es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, en base a las características que cada.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I Conversión del Modelo Entidad – Relación a Relacional.
Fundamentos de Bases de Datos
Transcripción de la presentación:

Las aplicaciones requieren datos persistentes Persistencia de Datos Persistencia Las aplicaciones requieren datos persistentes Los objetos viven en memoria mientras esté activa la JVM. Java puede persistirlos: Como Objetos. Como Valores. 2010 Lenguajes Visuales

Persistencia de Datos Como Objetos. Como Valores. Relaciones, asociaciones y ciclos de vida de objetos. Herencia y polimorfismo. Re-uso de patrones basados en polimorfismo (ej.: Strategy) Lo bueno: Buen nivel de re-uso, incluso en distintos proyectos. Lo malo: El manejo de JDBC y SQL puede ser complejo Como Valores. Resultados de consultas SQL son cargados en forma tabular La capa de presentación muestra vistas de datos tabulares La lógica accede a los datos, usando filas y columnas Lo bueno: Es fácil, mucha experiencia, bueno para reportes Lo malo: La lógica de negocio está en la BD y es difícil de re usar. 2010 Lenguajes Visuales

…El estado de los objetos sobrevive al proceso que los crea… Persistencia de Datos ¿Cuál es el problema de la persistencia de datos en aplicaciones Orientadas a Objetos? …El estado de los objetos sobrevive al proceso que los crea… ¿Y donde se persiste el estado de esos objetos? …en una base de datos relacional… Esto nos plantea 5 inconvenientes a considerar: 2010 Lenguajes Visuales

1. El problema de la granularidad Persistencia de Datos 1. El problema de la granularidad   ¿Es posible crear nuevos tipo de datos en SQL? Generalmente, disponemos de los tipos de datos nativos del motor de base de datos: 2010 Lenguajes Visuales

2. El Problema de los Subtipos (herencia/jerarquía de clases). Persistencia de Datos 2. El Problema de los Subtipos (herencia/jerarquía de clases). No podemos heredar o extender tablas 2010 Lenguajes Visuales

3. Problema de la identidad a.getId().equals(b.getId()) Persistencia de Datos 3. Problema de la identidad   Identidad de objetos (compara ubicación en memoria): a == b Igualdad de objetos (debe ser redefinido por el usuario): a.equals(b) Analizando la clave primaria obtenida de una base de datos: a.getId().equals(b.getId()) Estos tres casos suelen dar distintos resultados. 2010 Lenguajes Visuales

4. Problema de las asociaciones Persistencia de Datos 4. Problema de las asociaciones Las relaciones en JAVA se representan como: Referencias a objetos Colecciones de referencias a objetos   En una base de datos relacional, las relaciones son: Copias de valores de la Clave Primaria. La Integridad Relacional se mantiene con Claves Foráneas Las diferencias más notorias son: Las referencias tiene dirección, las claves foráneas no. Las multiplicidades muchos-a-muchos necesitan una tabla intermedia. 2010 Lenguajes Visuales

5. Problema de la navegación Persistencia de Datos 5. Problema de la navegación En JAVA, nosotros navegamos punteros   En SQL, nosotros usamos varios SELECTs: O un JOIN: Lenguajes Visuales 2010

Persistencia de Datos ¿Cuáles son las soluciones para resolver estas diferencias Objeto Relacional? SQL/JDBC + algunos patrones de diseño (DAO) Mapeo Objeto/Relacional (ORM) Vamos a plantear una serie de aspectos a analizar antes de comenzar con nuestra estrategia de persistencia. 2010 Lenguajes Visuales

Persistiendo Objetos Clasificación: Clasificación de objetos según el punto de vista de la persistencia:   Objetos transitorios: cuyo tiempo de vida depende directamente del ámbito del proceso que los instanció. Objetos Persistentes: cuyo estado es almacenado en un medio secundario para su posterior utilización, por lo que su tiempo de vida es independiente del proceso que los instanció. Podemos definir una subcategoría: Clases/objetos del tipo entidad. Clases/objetos del tipo valor (o componentes). 2010 Lenguajes Visuales

Características de una Entidad: Persistiendo Objetos Características de una Entidad: Tienen identificador de base de datos propio Tienen valor de clave primaria propio Tiene ciclo de vida propio Existen en forma independiente de cualquier otra instancia Pueden ser referenciado por otras instancias   Ejemplo: Persona, Auto, Universidad 2010 Lenguajes Visuales

Persistiendo Objetos Características de un componente o “tipo valor”: No tienen identificador de base de datos propio. siempre se identifican por el identificador de la entidad “dueño” o “padre” Tiene ciclo de vida dependiente de la entidad “padre” (si eliminan al padre, eliminan al componente o tipo valor) No puede ser referenciado por otras instancias, solo por la entidad padre.   Ejemplo: String, Dirección, Date   (Son casos típicos de relaciones de composición) 2010 Lenguajes Visuales

Persistiendo Objetos 1. Objetos simples:   Guardar: El objeto es persistido en una tabla con identificador con los datos correspondientes en las columnas de una tabla. Obtener: Se crea un Objeto con los valores de las columnas. Obtener Todos: Se crea una colección y se crean los objetos con los valores de las filas de la tabla que cumplan alguna condición. Si no hay filas la colección se devuelve inicializada. Eliminar: Se eliminará la fila correspondiente al objeto. Actualizar: Se actualizará todas las columnas de la fila correspondiente al objeto en cuestión. 2010 Lenguajes Visuales

2.a Relación de composición Uno a Uno Unidireccional Persistiendo Objetos 2.a Relación de composición Uno a Uno Unidireccional   Guardar Padre: El objeto padre y objeto hijo son persistidos en una sola tabla.   Obtener Padre: Se crea un objeto del tipo Padre y se le asignan los valores correspondientes. Se crea un objeto del tipo Hijo y de le asignan los valores correspondientes. Se realiza la asociación.  Nota: No se puede obtener al hijo en forma independiente Actualizar Padre: Se actualizará el objeto Padre y los datos del Hijo. Eliminar Padre: Se elimina tanto al padre como al Hijo. 2010 Lenguajes Visuales

2.b Relación de composición Uno a Muchos Unidireccional Persistiendo Objetos 2.b Relación de composición Uno a Muchos Unidireccional   Guardar Padre: Los datos del padre y del los hijos son persistidos en distintas tablas. Se guarda los datos del Padre en la tabla padre. Se guardan los datos de los hijos en la tabla hijo. Se realiza asociación (FK - PK).  Obtener Padre: Se crea un objeto Padre Se obtienen los Hijos del Padre. Se agregan los hijos a una colección Se realiza a asociación. 2010 Lenguajes Visuales

2.b Relación de composición Uno a Muchos Unidireccional (cont) Persistiendo Objetos 2.b Relación de composición Uno a Muchos Unidireccional (cont)    Actualizar Padre: Se actualizará los datos del objeto Padre. Se eliminarán todas las foreign keys de los hijos que tienen dicho . Se actualizarán los datos de los hijos que tienen identificador. Si hay hijos sin identificador (son considerados como hijos nuevos), se creará la fila correspondiente. Se realiza la asociación. Si hay hijos sin padre, son eliminados. Eliminar Padre: Se eliminará las filas de los Hijos del Padre (Por la relación de composición) Se eliminará al padre. 2010 Lenguajes Visuales

2.c Relación Muchos a Uno Unidireccional Persistiendo Objetos 2.c Relación Muchos a Uno Unidireccional   Guardar Hijo: Se guardan los datos del objeto hijo en la tabla Hijo. Si el Padre está en estado PERSISTIDO se guarda la relación mediante la FK en la tabla del Hijo. Si el Padre está en estado no PERSISTIDO se lanzará una excepción indicando que hay objetos en estado transitorio. (ROLLBACK de la transacción).   Obtener Hijo:  Se crea un objeto del tipo Hijo. Se asignan los valores correspondientes. Si la columna con el FK tiene valores, se crea un Objeto Padre con los valores correspondientes Si la columna con el FK está en null, no existe padre asociado. 2010 Lenguajes Visuales

2.c Relación Muchos a Uno Unidireccional (cont) Persistiendo Objetos 2.c Relación Muchos a Uno Unidireccional (cont)   Eliminar Hijo: Se eliminará la fila que identifica al hijo. Actualizar Hijo: Se actualizará los datos del objeto Hijo. Si el padre está en estado PERSISTIDO se guarda la relación mediante la FK en la tabla del Hijo. Si el padre está en estado NO PERSISTIDO, se lanzará una excepción indicando que hay objetos transitorios en la relación (ROLLBACK de la transacción).   2010 Lenguajes Visuales

2.c Relación Muchos a Uno Unidireccional (cont) Persistiendo Objetos 2.c Relación Muchos a Uno Unidireccional (cont)   Obtener Padre: Se crea un objeto del tipo Padre y se le asignan los valores correspondientes a la fila. Actualizar Padre: Se actualizará los datos del objeto Padre. Eliminar Padre: Se eliminará la relación Hijo/Padre. Se eliminará el padre.  2010 Lenguajes Visuales

2.d Relación Muchos a Muchos (Utiliza una tabla intermedia) Persistiendo Objetos 2.d Relación Muchos a Muchos (Utiliza una tabla intermedia) Guardar Padre: Persistir los datos del objeto padre. Guardar en la tabla intermedia el ID del Padre y el ID del Hijo. Si el Hijo está en estado no PERSISTIDO se lanzará una excepción indicando que hay objetos en estado transitorio. (ROLLBACK de la transacción).   Obtener Padre: Se obtiene un objeto del tipo Padre. Se obtienen los Hijos del Padre utilizando la tabla relación Padre Hijo. Se crea una colección y se agregan los hijos. Se realiza la asociación. 2010 Lenguajes Visuales

2.d Relación Muchos a Muchos (cont) Persistiendo Objetos 2.d Relación Muchos a Muchos (cont) Actualizar Padre: Se actualizará los datos del Padre. Se eliminarán todas las claves de los hijos que tienen dicho Padre. Se realiza la asociación. Si hay un Hijo que está en estado no PERSISTIDO se lanzará una excepción indicando que hay objetos en estado transitorio. (ROLLBACK de la transacción).   Actualizar Hijo: Se actualizará los datos del objeto Hijo. Eliminar Padre: Se eliminarán relaciones de los hijos con el padre. Se eliminará al padre. 2010 Lenguajes Visuales

2.d Relación Muchos a Muchos (cont) Persistiendo Objetos 2.d Relación Muchos a Muchos (cont) Eliminar Hijo: Se eliminará la fila que identifica al hijo. NOTA: No se eliminan los hijos huérfanos ya que la relación no es de composición. 2010 Lenguajes Visuales