Salta el contingut

1. Mapeig d'objectes

1. Introducció. Tècniques de mapeig.

En unitats anteriors hem estudiat l'accés dels nostres programes als fitxers i a les bases de dades relacionals. Com hem vist, el gran problema és que els nostres programes manipulen objectes, mentre que les bases de dades manipulen taules, la qual cosa provoca l'ús de models diferents i acaba en el ja esmentat buit objecte-relacional.

El mapeig objecte-relacional ve a omplir el buit entre aquests dos models, evitant que gastem temps en el nostre codi convertint entre els resultats de les operacions i els nostres objectes. Amb l'ús d'un ORM (Object Relational Mapping), un cop s'ha establert la correspondència entre els models, en els nostres programes només treballarem amb un model, el model orientat a objectes. D'aquesta manera aconseguim evitar que els nostres programes caiguin en aquest buit, centrant-nos en la lògica de negoci.

Les tècniques ORM (Object-Relational Mapping Tools) són les encarregades, mitjançant un conjunt de descripcions i metadades (dades que descriuen les dades), de fer una correspondència entre les dades primitives d'ambdós models i les seves estructures: entre taules i objectes, camps i atributs, els seus identificadors i les seves claus primàries. Aquesta correspondència no sempre serà senzilla i hauran d'estar disponibles metadades que puguin expressar una major complexitat.

Per exemple:

  • Potser trobarem que a vegades pot ser interessant emmagatzemar una propietat en més d'una columna, o diverses propietats en una sola columna.
  • En altres ocasions, pot haver-hi propietats que no s'emmagatzemin, o camps de la base de dades que no apareguin en els objectes.
  • Utilitzeu atributs amb tipus de dades no primitius que necessiten ser convertits en altres taules, i decidiu quins camps seran claus externes que apuntin a les noves taules.

De la mateixa manera que la definició de les dades, necessitarem un mecanisme de persistència d'objectes, de manera que els objectes puguin ser "rastrejats" a la memòria i quan es reflecteixin canvis en ells, es reflecteixin directament a la base de dades.

2. Mapeig

ORM

Amb aquestes eines de mapeig aconseguirem:

  • Reduir el temps de desenvolupament
  • Oblidar-nos del nostre SGBD subjacent
  • Treballar amb objectes, atributs i mètodes. No necessiteu saber res sobre taules i relacions.

Totes les eines de mapeig es basen en aquestes tres bases sòlides.

2.1. Tècniques de mapeig

Destaquem dues tècniques de mapeig objecte-relacional:

  • Aquelles que incrusten les definicions dins del codi de les classes i estan vinculades al llenguatge, com ara macros de C++ o anotacions de PHP i Java.
  • Aquelles que guarden les definicions en fitxers independents del codi, generalment en XML o JSON.

Aquestes tècniques no són exclusives, ja que totes dues estan disponibles en la majoria d'entorns i fins i tot poden coexistir en la mateixa aplicació.

2.2. Llenguatge de consulta

Com que els SGBD inclouen SQL com a llenguatge de consulta, la majoria dels ORM inclouen el seu propi llenguatge, basat en OQL (Object Query Language). Com en SQL, podem demanar informació, però basada en objectes en comptes de taules.

2.3. Sincronització

Els ORM inclouen diversos processos centrats en:

  • Seguir i descobrir els canvis que els objectes experimenten durant el seu cicle de vida per emmagatzemar-los.
  • Crear i iniciar noves instàncies d'objectes a partir de les dades emmagatzemades a la base de dades.
  • A partir dels objectes, extreure la seva informació per reflectir-la a les taules de la base de dades.

Note

Estudiarem el cicle de vida dels objectes quan es carreguen i es desen de la base de dades.