Disseny de la persistència Introducció i mapping objecte/relacional

Slides:



Advertisements
Presentaciones similares
TUTORIAL BÀSIC PER A LA GESTIÓ DE LA UBICACIÓ DE LES PERSONES EN L’APLICACIÓ DEL CATÀLEG D’ESPAIS SERVEI TÈCNIC I DE MANTENIMENT.
Advertisements

Serialització i persistència
Taller de Java Universidad de los Andes
Cambios en el espacio: transformaciones geométricas
Tema 3. L’Univers i el Sistema Solar. Pàg 36
Superfícies.
MOBILITAT D’ESTUDIANTS ERASMUS
Projecte Fi de Carrera Disseny i desenvolupament d’un esquema criptogràfic per gestionar de forma segura els historials mèdics dels pacients a través d’una.
Equacions amb dues incògnites.
TFC Intranet Escolar Desenvolupament d’una aplicació Java2 EE
Portada. Portada Presentació: VEIEM I ESCOLTEM ALS EXPERTS Feu clic a sota.
El qualificador i les qualificacions al Campus Virtual de la UB
Curs de Llenguatge Administratiu Valencià Juli Martínez Amorós
OLIMPIADA MATEMÀTICA 2010 FASE PROVINCIAL PRIMÀRIA PROVA INDIVIDUAL
PROJECTE DE PASTORAL I EDUCACIÓ EN VALORS
Ciències per al món contemporani
PRONOMS RELATIUS i PRONOMS INTERROGATIUS
Tema 2. DIVISIBILITAT.
AVALUAR-QUALIFICAR PER COMPETÈNCIES
El mercat ELS NENS I NENES DE P-4.
Antecedents (el context) Centre IATIC
PETITS REPORTERS Títol.
Una forma fàcil d'obtenir algunes fórmules
El nou pla docent de la UB: Adequació al sistema ECTS
Potències de nombres racionals
(Robert S. Baron & Norbert L.Kerr )
CONVERSA EXPLORATÒRIA
Els sintagmes Un sintagma és una paraula o un grup de paraules relacionades entre si, que tenen sentit i compleixen una mateixa funció sintàctica. Segons.
NOVETATS ESPAI MARGALEF
Tutorials Campus Virtual Càrrega automàtica d’alumnes
GO PRO Martí Macià 5è A.
Víctor Ruiz Marquès Enginyeria en Informàtica   Juan Martínez Bolaños
Recollida i ús de dades per al suport conductual en una escola
9.3 Joc de Nim (Joc amb mistos)
Matemàtiques 3er E.S.O..
Enginyeria del software II
Problema 1: Trobar la recta que passa pel punts A(2, -3) i B(-1, 3)
Imaginem que fa un segle haguéssim hibernat a un cirurgià i a un mestre...
Disseny de la persistència Serialització
DINÀMICA DELS FACTORS BIOLÒGICS: Grans grups d’edat
Tema 5: Nombres naturals i enters
Optimització de consultes en MySQL (unes notes)
Disseny de la persistència Introducció i mapping objecte/relacional
Disseny de la persistència Serialització
Estructurant les aplicacions MVC JSTL Struts
"SENYOR, ENSENYA’M A SER FELIÇ I A DONAR PAU!"
MORFOLOGIA i SINTAXI PRONOMS RELATIUS i PRONOMS INTERROGATIUS
TEMA 2 XARXES LOCALS David Bermúdez 4tC Vanesa Elvira 4tB
COM AJUDAR ELS NOSTRES FILLS EN LA TASCA EDUCATIVA
La imatge corporativa Una eina fonamental en l’actualitat
Passes a seguir per iniciar un nou curs acadèmic en el GestIB
Projecte Fi de Carrera - J2EE Alumne: Daniel Clemente Marcè
LA NOVA SELECTIVITAT I L’ACCÉS A LA UNIVERSITAT
La literatura i les matemàtiques van de la mà.
BASES DE DADES Consultes
Principi del canvi (immanent)
SISTEMA DUNAR.
DEFINICIONS DEL TREBALL EN EQUIP
Llengua catalana i literatura
MORFOLOGIA i SINTAXI PRONOMS RELATIUS i PRONOMS INTERROGATIUS
TUTORIAL BÀSIC PER A LA GESTIÓ DE LA UBICACIÓ DE LES PERSONES EN L’APLICACIÓ DEL CATÀLEG D’ESPAIS SERVEI TÈCNIC I DE MANTENIMENT.
Projecte: Videojocs.cat
2. El problema de la naturalesa i del coneixement als inicis de la reflexió filosòfica 2.1. El concepte de physis Pàgina 21 Primer problema: Què és la.
6a SETMANA de QUARESMA US PRESENTEM LA JOANA QUE ENS ACOMPANYARÀ EN AQUESTA SISENA SETMANA DE QUARESMA. LA JOANA DE VEGADES ES MOSTRA MOLT RESPONSABLE.
Introducció a l’anàlisi d’agrupaments (cluster)
Gestió del coneixement
FUNCIÓ DE PROPORCIONALITAT I FUNCIÓ AFÍ
Estils i Plantilles Ms Word.
Imaginem que fa un segle haguéssim hivernat un cirurgià i un mestre...
Aprendre junts alumnes diferents: Una escola per a tothom
Transcripción de la presentación:

Disseny de la persistència Introducció i mapping objecte/relacional Toni Navarrete Enginyeria del Software II – UPF 2006

Continguts Objectiu: com fer per guardar les dades dels objectes (els seus atributs) de forma persistent, típicament a una BDR? Com després els objectes accedeixen a les dades guardades? Conversió (mapping) de model de classes (model estàtic UML) a model relacional Formes per gestionar la persistència en Java Serialization Amb un middleware: JDBC A la pròpia classe, o a una classe de connexió per a cada classe de domini, o bé a una classe DBManager? Utilitzant EJB, una plataforma més genèrica estandaritzada per Sun al J2EE, i en concret els ejbs d’entitat Amb un framework de persistència

Conversió del model de classes a relacional Durant el disseny construim un model de classes Les dades es guarden a una BDR Quin haurà de ser el model relacional corresponent al nostre model de classes? En principi, un objecte es correspon amb una fila d’una taula

Conversió del model de classes a relacional Atributs a columnes Els atributs d’una classe passen a ser 0 o més columnes d’una taula El cas habitual: 1 atribut d’un tipus primari o String passa a ser una columna 0 perquè hi ha atributs no persistents. Ex: total d’una factura En Java es marquen com transient Més d’1 perquè els atributs que no siguin primaris o Strings passaran (recursivament) a formar vàries columnes (de vàries taules) És freqüent que s’utilitzi l’OID (nombre enter) dels objectes com a primary key de les taules

Conversió del model de classes a relacional Equivalència tipus Java a columnes BDR Tipus columna BDR Boolean, boolean bit, tinyint, smallint, byte, int2 Byte, byte tinyint, smallint, byte, int2 Character, char integer, char, varchar Short, short smallint,integer, number, int2 Integer, int integer, number, int4 Long, long bigint, decimal, int8 Float, float float, decimal, real Double, double double, number, decimal BigInteger decimal, number, bigint BidDecimal decimal, number,double String char, varchar, varchar2, longvarchar, clob Date timestamp, date, datetime

Conversió del model de classes a relacional Classes a taules En general una classe passa a ser una taula Després veurem què passa amb les associacions i agregacions (passen a ser relacions) Hi ha situacions en què un objecte pot passar a ser un atribut Exemple codi postal Classe CodiPostal té un atribut codi i un mètode validar La classe Empresa té un atribut codiPostal, instància de CodiPostal En relacional, codiPostal serà una columna de la taula Empresa Herència

Cap problema amb gestor de BDOO, però sí amb BDR 3 solucions Exemple: Conversió del model de classes a relacional: Classes a taules: herència Cap problema amb gestor de BDOO, però sí amb BDR 3 solucions Exemple: Classe abstracta

Conversió del model de classes a relacional: Classes a taules: herència (solució 1) Una única taula per tota la jerarquia amb tots els atributs de totes les classes Els camps no usats es posen a null Es pot afegir un camp que indiqui el tipus (la subclasse) Característiques La forma més simple Suporta que una persona tingui més d’un rol i és fàcil fer un canvi de rol Totes les dades d’una persona estan en una única taula Molt ineficient quant a espai Molt dolent si molts atributs específics Molt acoblat: un canvi en un atribut d’una subclasse afecta a tot el conjunt Fer un llistat de tots els alumnes és més lent que en els altres esquemes, ja que hi ha més files a la taula Taules: Persona (ID,nom,dni,data_naixement,nia,nSS)

Conversió del model de classes a relacional: Classes a taules: herència (solució 2) Definir una taula per cada classe no abstracta, que contindrà tant els atributs propis com els de la superclasse Característiques Continuen estant totes les dades d’una persona en una mateixa taula Llistats per rol (d’alumnes o de professors) eficients Si modifiquem un atribut de la superclasse, l’hem de modificar a moltes taules. Per exemple afegir telèfon a Persona És difícil manegar canvis de rol i també rols múltiples (calen dades repetides) Taules si Persona no fos abstracta: Persona (ID,nom,dni,data_naixement) Estudiant (ID,nom,dni,data_naixement,nia) Professor (ID,nom,dni,data_naixement,nSS) Taules: Estudiant (ID,nom,dni,data_naixement,nia) Professor (ID,nom,dni,data_naixement,nSS)

Conversió del model de classes a relacional: Classes a taules: herència (solució 3) Definir una taula per cada classe (tant subclasses com superclasses) Cada taula contindrà només els atributs propis de la classe i estarà relacionada amb la superclasse Característiques: És la que millor s’acosta al model OO (gens acoblat) Les dades d’una persona estan repartides a més d’una taula, amb la qual cosa les lectures/escriptures són més lentes Suporta bé els múltiples rols i els canvis de rol Millor amb vistes 0..1 Estudiant Taules: Persona (ID,nom,dni,data_naixement) Estudiant (ID_persona -FK-,nia) Professor (ID_persona -FK-,nSS) 1 Persona 1 Professor 0..1

Conversió del model de classes a relacional Classes a taules: herència (resum) Factor Una única taula Una taula per classe concreta Una taula per classe Acoblament Alt Mitjà Baix Facilitat d’implementació Fàcil Difícil Ús d’espai Dolent Bo Capacitat per múltiples rols i canvis de rol Mitjana Baixa Alta Llistat per un rol concret Lent Ràpid Accés a les dades d’una persona Llistat complet (tots els rols)

Conversió del model de classes a relacional Relacions Les associacions i agregacions es converteixen en relacions La diferència entre associació i agregació és més bé de la capa de domini que de la de dades No hi ha distinció en relacional Les relacions es basen en mantenir foreign keys Per implementar una relació 1-1 o 1-N, simplement cal afegir la clau d’una taula en l’altra com a FK En cas de relacions N-M, cal trencar-la, utilitzant una taula intermitja, en dues relacions 1-N

Conversió del model de classes a relacional Relacions (exemples) 1 N A B Taules: A (idA,...) B (idB,...,idA -FK-) Taules: A (idA,...) B (idB,...) AB(idA -FK-,idB -FK-,...) 1 N N 1 A AB B

Una reflexió No sempre els mètodes de desenvolupament conduïts per casos d’ús (use-case driven) són els més adequats També hi ha els mètodes conduïts per la informació (information-driven) S’ajusten més a aplicacions molt centrades en la BDR La part central no és el model de classes sinó el relacional No són realment OO (són procedimentals)