Mapatge d'objectes relacional

From Wikipedia, the free encyclopedia

Remove ads

El mapatge d'objectes relacional (ORM, sigles en anglès de Object-relational mapping) és una tècnica de programació per convertir dades de llenguatges de programació orientats a objectes en la seva representació en bases de dades relacionals, mitjançant la definició de les correspondències entre els diferents sistemes.

Remove ads

Descripció de la necessitat

La gestió de dades en programació orientada a objectes es fa a través de la manipulació d'objectes, que gairebé sempre són valors no escalables. Considerant l'exemple d'una entrada d'una llibreta d'adreces, que representa una persona amb zero o més adreces o zero o més telèfons, en orientació a objectes això es representaria com un objecte «persona», de la qual penjarien les dades personals, les adreces i els telèfons, aquestes dues darreres dades, també objectes. Les bases de dades relacionals, només poden emmagatzemar valors escalars, com cadenes de caràcters o enters i organitzar-los en taules. El programador ha de convertir els valors representats en forma d'objectes en valors simples o agrupats per l'emmagatzematge a la base de dades i implementar el procés invers. Alternativament podria treballar només amb valors escalars, perdent els avantatges de la programació orientada a objectes. Per poder gaudir de la potència de la programació a objectes i estalviar els processos de conversió d'objecte a registre de la base de dades i l'invers, s'ha creat l'automatització d'aquest procés, mitjançant el mapatge d'objecte relacional.

Remove ads

Implementacions

Les bases de dades relacionals, que van proliferar a partir de l'aparició de la programació orientada a objectes, al principi de la dècada dels 1990, són les més típiques entre les bases de dades. Les bases de dades relacionals fan servir una sèrie de taules per organitzar dades. Les dades de taules diferents són associades mitjançant restriccions declaratives, en lloc d'apuntadors o enllaços. Les mateixes dades que, en programació, poden ser emmagatzemades en un simple valor d'objecte probablement necessiten ser emmagatzemades arreu de diferents taules.

Una implementació d'objecte relacional ha de poder triar de forma sistemàtica i predictible quines taules ha d'utilitzar per poder generar el llenguatge d'interrogació estructurat (SQL) necessari. Vist en conjunt, el xoc d'interconnexions entre la solució arquitectònica de l'aplicació orientada a l'objecte, en Java, i el com s'emmagatzemen les dades en un sistema relacional de bases de dades, com Oracle o DB2, implica un complex conjunt de reptes a resoldre per a satisfer tasques com la millora del rendiment, l'escalabilitat lineal o la gestió de les operacions Crear, llegir, actualitzar i esborrar (CRUD) i fins i tot les relacions més complexes sense alentir, eliminar codificació SQL - Java Database Connectivity (JDBC) - Java per guanyar temps i crear consistència, fer simples el manteniment i els futurs canvis, etc. Els objectius reals d'un mapatge d'objectes relacional (ORM), és el de guanyar temps, simplificar el desenvolupament (és a dir, l'eina ORM absorbeix la part complexa que tenia el desenvolupador), augmenta el rendiment i l'escalabilitat i redueix la complexitat en l'arquitectura, fins als límits de l'eina ORM combinades amb l'experiència del programador.

Molts paquets van ser desenvolupats per reduir la feixuga tasca de desenvolupar sistemes de mapatge proveint llibreries o classes que poden fer-ho automàticament. Donada una llista de taules de la base de dades i objectes del programa, automàticament mapejaran peticions entre un i l'altre. Demanar a un objecte persona els seus telèfons, resultarà en la creació i enviament d'una consulta correcta i adequada i els resultats seran traduïts directament en objectes telèfon dintre del programa.[1] Des del punt de vista del programador, el sistema hauria de semblar que treballa amb un gestor d'objectes persistents. Hauria de crear objectes i continuar el seu cicle de vida de forma quasi transparent, que s'actualitza a la base de dades.

A la pràctica, tanmateix, les coses mai són tan senzilles. Tots els sistemes ORM tendeixen a fer-se visibles de diverses maneres, i redueixen alguns graus la pròpia capacitat d'ignorar la base de dades. Pitjor, la capa de traducció pot ser lenta i ineficient (notablement en termes del SQL que escriu), resultant en programes més lents i que consumeixen més memòria que el codi escrit «a mà».

Un nombre de sistemes ORM van ser creats al llarg dels anys però el seu efecte al mercat sembla prou dispar. NeXT n'ha fet un, considerat un dels millors, l'Enterprise Objects Framework (EOF), però ha fallat a l'hora de tenir un impacte perllongat al mercat, principalment per ser massa lligat al toolkit de NeXT, OpenStep. Posteriorment va ser integrat a WebObjects, també de NeXT i primer servidor d'aplicacions orientat a objectes. A partir de la compra de NeXT per Apple, el 1997, EOF aporta la tecnologia darrere del lloc web de comerç electrònic de la companyia, els serveis .Mac i l'iTunes Music Store. Apache Cayenne va aparèixer a l'estiu de 2002 i es proposa complir l'estàndard JPA.[2]

Una utilitat alternativa són tecnologies com Resource Description Framework (RDF), SPARQL o el concepte del triplestore. RDF és una serialització del concepte subjecte-predicat-objecte, RDF/XML és una representació del mateix en XML, SPARQL és un llenguatge de consultes SQL i triplestore és una descripció general de qualsevol base de dades que treballa amb un tercer component.

Més recentment,[Quan?] un sistema semblant ha començat a evolucionar dintre del món Java, conegut com a Java Data Objects (JDO). A diferència d'EOF, JDO és una especificació, de manera que hi ha diferents implementacions dels diversos fabricants. L'Enterprise Java Bean 3.0 (EJB3) també cobreix la mateixa àrea. Hi ha hagut conflicte d'estàndard entre ambdues especificacions. JDO disposa de bastants implementacions comercials, mentre EJB 3.0 encara està en fase de desenvolupament.[Quan?] Tanmateix, JCP ha anunciat nous estàndards per unir els que hi ha en conflicte i obtenir que l'estàndard futur funcioni arreu de les arquitectures basades en Java. L'altre exemple a esmentar és Hibernate, l'entorn ORM més utilitzat al món Java i que ha inspirat l'especificació EJB3.

A l'entorn web, Ruby on Rails juga un rol central i és gestionat per l'eina de wrapping ActiveRecord. DBlx::Class juga un rol similar per l'entorn basat en Perl i que s'anomena Catalyst.

En Python també hi ha múltiples ORMs, com ara SQLObject, SQLAlchemy, Dejavu Arxivat 2007-07-10 a Wayback Machine., PyDAO Arxivat 2007-09-29 a Wayback Machine., Strom[Enllaç no actiu], etc. Molts entorns python suporten un o més ORMs.

Remove ads

Bases de dades No-SQL

Una altra solució podria ser les Bases de dades orientades a objectes (OODBMS), és a dir, bases de dades dissenyades específicament per treballar amb valors d'objectes. Així ja no hi ha menester de convertir dades en i des de la forma SQL, ja que les dades són emmagatzemades en la seva representació original.

Les bases de dades com Caché han menester ORM manual. L'accés a valors no escalars ja hi és incorporat. Caché permet el desenvolupador de dissenyar qualsevol combinació orientada a objectes i emmagatzemat estructurat de taules a la base de dades, en lloc de reprocessar amb eines externes.

Les bases de dades orientades a objectes encara gaudeixen d'un ús poc ampli.[Cal actualitzar] Una de les limitacions principals és que canviar d'un entorn SQL en un de purament orientat a objectes implica perdre la capacitat de crear consultes SQL, una manera provada, de recuperació ad hoc de combinacions de dades. Per això, molts programadors es troben a si mateixos més a casa amb sistemes de mapatge objecte-SQL, tot i que la majoria de bases de dades orientades a objectes són capaces, fins i tot, de processar queries SQL, fins a un límit.[cal citació]

Crítica

Algunes veus han tret al descobert que la promoció de les eines ORM és símptoma d'un intent de resoldre la part equivocada de la qüestió del xoc d'interconnexions de l'objecte relacional. El principi d'apuntalar la informació en bases de dades relacionals implica que l'orientació a objectes per si mateixa ja és inadequada per les veritables necessitats en termes de manipulació de dades i és aquest paradigma al qual caldria dirigir-s'hi com un tot. Si així fos, ORM esdevindria redundant. Vist així, el xoc d'interconnexions i la suposada necessitat del mapatge d'objecte-relacional, apareixen de l'equació equivocada d'objecte i relació (taula o vista, parlant en SQL). El mapatge correcte al model relacional és el que hi ha entre objecte i tipus.

Remove ads

Vegeu també

Referències

Enllaços externs

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads