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

AIGUAMOLLS DE L’ALT EMPORDÀ CdA Empúries.
Llistat d’elements d’origen islàmic
PROPORCIONALITAT 1 Funciona amb “clics”.
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.
TFC Intranet Escolar Desenvolupament d’una aplicació Java2 EE
OLIMPIADA MATEMÀTICA 2010 FASE PROVINCIAL PRIMÀRIA PROVA INDIVIDUAL
EL DINER, ELS BANCS I LA POLÍTICA MONETÀRIA
PROJECTE DE PASTORAL I EDUCACIÓ EN VALORS
Ciències per al món contemporani
PRONOMS RELATIUS i PRONOMS INTERROGATIUS
Writer 4... mira’t bé la pàgina
PETITS REPORTERS Títol.
UNITAT 1: Els nombres reals (I)
ESTADÍSTIQUES I WEBQUEAST
Creació d’un mapa personalitzat
PubMed i el gestor de revistes del CRAI de la UB (servei SFX)
Disseny i implementació d’una base de dades relacional
SISTEMA GESTOR D’EMPRESA D’EXCAVACIONS
L’escola, l’entorn i la línia pedagògica.
EL BOSC DE COLLSEROLA A LA PRIMAVERA
QUÈ FA QUE UNA PILOTA BOTI MÉS QUE UNA ALTRA?
Aprendre junts alumnes diferents: Una escola per a tothom
Termes i expressions algebraiques
Treballem l’estadística
Tutorials Campus Virtual Càrrega automàtica d’alumnes
Víctor Ruiz Marquès Enginyeria en Informàtica   Juan Martínez Bolaños
Situacions Simuladores Preferencials (SSP)
MUTACIÓ Eduardo Chillida Escultura segle XX.
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..
Què existeix i què no existeix.
DISC DUR Dispositiu encarregat d’emmagatzemar informació de forma permanent al nostre ordinador.
Enginyeria del software II
Disseny de la persistència Serialització
Formació per a responsables del programa Biblioteca escolar: PUNTEDU
Ruben Balada Tripiana Informática
Objectiu Educatiu Trienni
Curs de Llenguatge Administratiu Valencià Juli Martínez Amorós
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Sòlids Líquids Gasos Plasma
Tema 5: Nombres naturals i enters
Introducció a la Programació Orientada a Objectes
Optimització de consultes en MySQL (unes notes)
Disseny de la persistència Introducció i mapping objecte/relacional
SCIENCE OF SYNTHESIS.
Curs de Llenguatge Administratiu Valencià Juli Martínez Amorós
Disseny de la persistència Serialització
Estructurant les aplicacions MVC JSTL Struts
TECNOLOGIA.
TEMA 2 XARXES LOCALS David Bermúdez 4tC Vanesa Elvira 4tB
XARXES PRIVADES VIRTUALS ( VPNs )
XXIII OLIMPìADA MATEMÀTICA 2012
Una experiència d’ambientalització curricular als estudis de Magisteri de la FPCEE Blanquerna PAMB IV SEMINARI SOBRE AMBIENTALITZACIÓ CURRICULAR de les.
TEST DE L´EMPRENEDOR/A
Xavi Fabregat 4tA Karim Atsailali 4tA
SQL1 7/9 Baloian Acceso a Bases de Datos
BASES DE DADES Consultes
Estudiant: Eva Muñoz Altimis
Organització i creixement
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
Què fas a la universitat?
Manteniment calendari d'exàmens
Què fas a la universitat?
Transcripción de la presentación:

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

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)