Professional Documents
Culture Documents
UniversidaddeMurcia
PERSISTENCIADEOBJETOS.
JDO,SOLUCINJAVA
JuanMrmolCastillo
Director:Dr.JessJoaqunGarcaMolina
1
dfd
Agradecimientos
AmiesposaMaraJos,amishijosJuanyMara,queduranteestosltimosaos,
hansufridomisconstantesausenciasconcompresinycario.
AmihermanaLoliycuadoPaco,quedesdesiempretantomehanayudado.
Amisamigosquenohandejandodealentarmeparacompletarconestetrabajolos
estudiosdeinformtica.
3
Prlogo
Lapersistenciaesunproblemaquesiempremehainteresado,pormitrabajocomo
programador y como estudiante de la orientacin a objetos. En mi trayectoria como
programador de aplicaciones, primero con lenguajes de cuarta generacin, y tiempo
despus,conlenguajesorientadosaobjetos,guardaryrecuperardatosdeficherosybases
de datos relacionales, consuman buena parte del esfuerzo de desarrollo. Particip en la
programacin de un conjunto de libreras de objetos que automatizaban la interaccin en
SQL con la base de datos relacional para formularios y listados, pero la solucin no era
completamente satisfactoria, no era transparente, los modelos de objetos y datos eran
distintos, se poda programar sin un modelo de objetos del dominio. La asistencia a
conferencias de Oscar Daz, Mario Piattini, K.Dittrich, y Elisa Bertino, sobre las bases de
datos orientadas a objetos (OODBMS), provoc mi inters por conocer estos sistemas y
estudiarlasolucinalproblemadepersistirobjetosenbasesdedatosrelacionales.
Los planes de estudio, que he tenido ocasin conocer ms de cerca, contienen
crditosdeformacinsobrelaorientacinaobjetos,lasbasesdedatosrelacionalesyJAVA,
con diferentes enfoques y amplitud. Materias todas ellas relacionadas con el problema la
persistencia orientada objetos, que en cambio, no ocupa un lugar propio en los planes de
estudio, pese a ser, en mi opinin, un tema esencial para el trabajo de un ingeniero de
informtica, dominar las tcnicas de cmo transformar los objetos en datos y hacerlos
perduraryviceversa.
Este prlogo precede, un trabajo que, comenz tres aos atrs, cuando aparecan
lasprimerasnoticiassobrelapropuestadecreacindeunnuevoestndarparapersistirlos
objetos Java, el Java Data Objects (JDO), tres aos ms tarde, el estndar se haba
convertido en uno de los temas Java ms populares, con un aparente creciente respaldo,
numerosostrabajosydiscusionesabiertas.
Lacuestindelapersistenciaesamplayafectaadistintasmaterias,comosonlas
bases de datos, lenguajes de programacin, compiladores, la orientacin a objetos y la
programacin, que dan lugara diferentes perspectivas y planteamientos posibles. De otro
lado, para muchos el problema no es tal, hasta enfrentarse a este reiteradas veces, la
persistencia siempre tiene una consideracin lateral, slo es guardar y recuperar datos!
Peromiexperiencia,mellevaapensarqueesnecesariaunavisinglobalparaentenderel
problema en su extensin y comprender la conveniencia de una solucin completa a la
persistenciadeobjetos.
Aquellos que no han necesitado persistir sus objetos, pero vayan a hacerlo, y
quienes no encuentran una solucin satisfactoria a sus necesidades, pero deban decidir
entre comprar o escribir su propia solucin; espero encuentren en las pginas siguientes
elementosdejuicioquesirvanparavalorarcualdebesersudecisin.
5
Introduccin
El desarrollo de aplicaciones para sistemas de informacin empresarial ideados
para su utilizacin en la Red, es un rea en continua expansin desde mediados de los
noventa. Estas aplicaciones deben guardar y recuperar datos que deben perdurar tras
finalizarlaejecucindelasmismas,datosquedebenpersistir,serpersistentes.Estosdatos
songuardadossobrediferentessistemasdegestinymanejodedatoscomosonarchivos,
basesdedatososistemasdeprocesamientodetransacciones.
En mayo del 1995 fue presentado JAVA[49], cuyo nivel de aceptacin es cada vez
mayor,eneldesarrollodeprogramasdirigidosalaRed.LasaplicacionesJavaquemanejan
datos se enfrentan tambin con la dificultad de guardar y recuperar datos, que estn
situados sobre distintos tipos de fuentes de informacin o sistemas de gestin de datos.
Mediosestosqueestnsolidamenteimplantadosenlasorganizacionesyquesonelmotor
dedatosdesussistemasdeinformacin.OtroreaenaugedondeJavaestacreciendoes,el
mercadodelos nuevosaplicativosdiseados paralos pequeosdispositivos conectadosa
laRed,queaparentementevanacambiarnuestrasvidas[21][43]
1
,yquetambinnecesitan
guardar y recuperar datos de estado, pensemos en un moderno asistente personal
conectado va telefona celular a la Red, con agenda, avisos y alarmas. La persistencia de
los objetos es necesaria en todo tipo de entornos, abarca desde los grandes sistemas a
dispositivosdeltamaodeunatarjetadecrdito.
LasaplicacionesJavaquenecesitanmanejardatosquedebenperdurar,planteanun
escenario donde los programadores estn obligados a utilizar y conocer detalladamente
diferentestcnicasdeaccesoeinterfacesdeprogramacinparacadaunodelossistemasde
gestindedatosempleados.Estosignificaconocercomopoco:
Dos lenguajes distintos para plasmar la lgica del negocio: Java y el
lenguajeespecializadorequeridoporelsistemadegestindedatos.
El modo de integrar ambos evitando las resistencia por la falta de
correspondencia(Impedancemismatch)deunoyotrolenguaje;excepcin
hechadelossistemasdegestindedatosbasadosenobjetos
Esta situacin ha impulsado la construccin de servicios para almacenar y
recuperardatos,serviciosdepersistencia,quedesempeensulabordeformatransparente,
uniforme e independiente del sistema plataforma de gestin de datos. Esto permitira
facilitarlatareadelprogramador,siendomsproductivaycentradaenlgicadelnegocio.
Lademandadeserviciosdepersistenciatransparentes,esyhasidofuentedegraninters
para la investigacin con importantes proyectos [33] y para la industria con numerosos
productos[52].
La persistencia del estado de los objetos tiene slidos fundamentos, tericos y
prcticos,conmsdeunadcada[1][2].Lastecnologasdepersistenciadeobjetoshansido
aplicadasconxitoaproyectosconrequisitosdealtasprestacionesenreasdelosnegocios
delastelecomunicacionescomoIridium[54]ybancosdedatoscientficoscomoacelerador
departculasdeStandford[46],desdeprincipiosdelosnoventa,perosingranrepercusin
enelmundodeldesarrollodeaplicacionesdeempresa.
El OMG tiene un servicio estndar de persistencia de estado de los objetos
independiente del lenguaje de programacin einteroperable, denominado Persistent State
Service(PSS),suobjetivoesmanejarelestadopersistentedelosobjetosCORBA,dentrodel
1
Java,primerollamadoOak,fueinicialmenteconcebidoparaunosdispositivosdemanoaplicadosala
televisinporcabledentrodelproyectoGreen[i1]
7
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
mbitodelacomunicacininternaentreserviciosCORBAyserviciosdedatos,lainterfaz
entre ambos para la persistencia del estado de objetos CORBA; probablemente este
estndarseapocoapropiadocomointerfazaunabasededatospuesconsideraelsoporte
detransaccionescomoopcional[22].
La persistencia conJava es un caso particulardel problemadelapersistencia con
objetosdonde,hastafinalesdelao2001,habacuatroestndaresprincipalesparamanejar
datos Java persistentes: la serializacin, Java Database Connectivity (JDBC), SQLJ y la
adaptacin para Java del estndar ODMG. La serializacin preserva la integridad
referencialdelosobjetos,peronosoportalaconcurrenciadeaccesopormltiplessesiones
de usuario. JDBC necesita que el desarrollador explcitamente maneje la correspondencia
entre el estado de los objetos y su proyeccin sobre relaciones delsistema gestor de bases
dedatosrelacional(RDBMS)enusoyconocerotrolenguaje,SQL.SQLJofrecesimplificarel
cdigoJava,alembeberelcdigoSQLestticoenlosprogramas,utilizaJDBCparaelSQL
dinmico y ofrece soporte al modelo de objetos del SQL:1999. Ninguno de los tres cubre
satisfactoriamente la cuestin de la persistencia. El ltimo, la adaptacin para Java del
ODMG,eshastalafechalamejortecnologadisponiblepararesolverlapersistenciaenJava
enopinindeDavidJordanyDouglasBarry[34],expertosderenombresobrelamateriade
la persistencia, ideado para persistir sobre RDBMS y OODBMS. De este ltimo estndar
existen en el mercado acreditados productos como Java Blend de Sun, Jasmine de
Computer Associates, FastObjects de Poet, Objecstore de Progress, Versant, Objectivity y
otros.
La especificacin para datos de objetos Java, Java Data Objects (JDO) desarrollada
bajo el Sun Community Process con la identificacin JSR12, es la nueva propuesta para
resolver el problema delapersistenciade objetos Java, sobre cualquiersistema de gestin
dedatos,tantoenentornosreducidos,comountelfonoJava,comoenlosgrandessistemas
escalables de servidores de aplicaciones. El proceso comenz en Julio de 1.999 y fue
aprobadocomoestndarel25deMarzode2002.
Objetivos
Este trabajo es una aproximacin al problema de la persistencia de objetos y su
solucinenJava,conelestndarJDO,quepretende:
2. Llevaracabounprocesodedescubrimientodelosrequisitos,analizandodistintas
situaciones, desde el planteamiento ms simple a la prctica ms compleja, para
ponerdemanifiestoyfundamentarlosrequisitospresentados.Diversosprogramas
Javairnilustrandolassituacionesqueserndiscutidas.
3. Elaborar unas pruebas basadas en sencillos programas Java, para confrontar las
tecnologasylosrequisitos,empleandoalgnproductocomercialJDO.Unadelas
pruebas consiste en la modificacin una aplicacin existente que usa JDBC para
medirelimpactoenlaproductividaddeJDOfrenteJDBC.
Temasnoconsiderados
El tema de la persistencia de objetos y el estudio en profundidad de todos los
aspectosimplicadosenlaespecificacinJDO,esmuyextenso,paraunsoloproyectofinde
carrera.Porlocual,enestetrabajo,nosonconsideradoslossiguientespuntos:
Problemtica de desmenuzamiento y duracin de transacciones. Relacin con
serviciosdetransacciones.
Tratamientodeobjetosdegrantamao:objetosmultimedia,estructurascomplejas
degranvolumen.
Objetos distribuidos. Objetos agregados de otros dispersos sobre diferentes
sistemas.
Optimizacindemodelosparaacceso.Mejorasenlastcnicasdeacceso.
IntegracinenJ2ME,Java2MicroEdition,paradispositivosqueconectanalaRed.
Organizacindelproyecto
Elpresentedocumentoseorganizaencincocaptulos:
El primer captulo, responde a las preguntas: Qu es la persistencia de objetos?
Cul son los requisitos a cubrir? Establece los fundamentos, los trminos y
requisitosqueformanelmarcodeanlisisutilizadoalolargodeltrabajo.
Elsegundo,tratasobrelaequivalenciadeclasesentablasrelacionales,ilustrauna
solucinalproblemadefaltadecorrespondenciaentreclasesytablasdelasbases
dedatosrelacionales
En tercero de los captulos, se descubre Java Data Objects, presentando la
especificacin de una forma breve y resumida, pero til para los objetivos del
proyecto.
Elcaptulonmerocuatro,esdondesecomparanlasalternativasaJDOdentrodel
marco establecido en primer captulo, se razona sobre le rendimiento y la
productividad, mostrando una pruebas simples pero, que ayudan a contrastar
diferentespostulados.
En el ltimo, son expuestas las ventajas e inconvenientes de trabajar con JDO, su
situacin en panorama econmico y posible evolucin futura, junto con las
respuestas a algunas interrogantes que surgen tras leer los cuatro primeros
captulos..
9
Tabladecontenidos
CAPTULO 1 PERSISTENCIA DE OBJETOS: CONCEPTOS Y REQUISITOS. 17
1.1. CONCEPTOS SOBRE PERSISTENCIA DE OBJ ETOS .......................................................... 17
1.1.1. Persistencia........................................................................................................ 17
1.1.2. Instancia Persistente y Transitoria .................................................................... 18
1.1.3. Servicio de persistencia de objetos .................................................................... 18
1.1.4. Persistencia ortogonal ....................................................................................... 23
1.1.5. Cierre de persistencia ........................................................................................ 24
1.1.6. Persistencia por alcance .................................................................................... 24
1.1.7. Transparencia de datos...................................................................................... 24
1.1.8. Falta de correspondencia entre clases y datos .................................................. 25
1.2. REQUISITOS PARA UN SERVICIO DE PERSISTENCIA...................................................... 25
1.2.1. Dimensin tecnolgica. Requisitos estructurales y funcionales......................... 26
1.2.2. Dimensin organizacional ................................................................................. 58
1.2.3. Dimensin Econmica........................................................................................ 62
1.3. RESUMEN................................................................................................................... 62
CAPTULO 2 EQUIVALENCIA CLASE - TABLAS RELACIONALES ............... 65
2.1. FALTA DE CORRESPONDENCIA CLASE-TABLA ........................................................... 65
2.2. IDENTIDAD................................................................................................................. 68
2.3. CONVERSIN DE CLASES EN TABLAS.......................................................................... 69
2.4. RELACIONES DE AGREGACIN Y COMPOSICIN A CLAVES AJ ENAS............................ 71
2.5. LA HERENCIA EN FILAS Y REUNIN (J OIN) ................................................................. 75
2.6. DE TABLAS A CLASES................................................................................................. 78
2.7. RESUMEN................................................................................................................... 79
CAPTULO 3 JAVA DATA OBJECTS....................................................................... 81
3.1. J DO A VISTA DE PJ ARO............................................................................................ 81
3.1.1. Objetivos Fundamentales................................................................................... 82
3.1.2. Entornos de ejecucin objetivo .......................................................................... 82
3.1.3. Capacidad de las clases para persistir. Procesador de cdigo Java................. 83
3.1.4. Estado actual...................................................................................................... 84
3.2. J DO BAJ O LOS FOCOS........................................................................................... 85
3.2.1. JDO a travs de un ejemplo ............................................................................... 85
3.2.2. Modelo de persistencia..................................................................................... 107
3.2.3. Lenguaje de Consultas ..................................................................................... 112
3.2.4. Operaciones ..................................................................................................... 113
3.2.5. Interfaces y clases ............................................................................................ 113
3.2.6. Descriptor de Persistencia XML...................................................................... 117
3.2.7. Gua para la portabilidad ................................................................................ 119
3.2.8. Procesador de Referencias JDO...................................................................... 120
3.2.9. Integracin con servidores de aplicaciones Java............................................. 127
3.2.10. Asuntos pendientes ......................................................................................... 128
3.2.11. La especificacin: su organizacin y redaccin. ........................................... 128
3.2.12. Apndices ....................................................................................................... 129
3.2.13. Implementacin de Referencia y Equipo de compatibilidad de la tecnologa 129
3.2.14. Qu no aborda JDO: Correspondencia objeto-dato...................................... 129
3.3. RESUMEN................................................................................................................. 129
CAPTULO 4 COMPARATIVA JDO VS OTROS .................................................. 131
4.1. MBITO DE LA COMPARATIVA.................................................................................. 131
4.2. COMPARATIVA......................................................................................................... 132
4.2.1. Rendimiento...................................................................................................... 132
4.2.2. Productividad................................................................................................... 146
4.3. COMPARATIVA EN LOS REQUISITOS.......................................................................... 155
4.3.1. Estructurales .................................................................................................... 155
4.3.2. Funcionales...................................................................................................... 158
4.3.3. Funcionalidad avanzada.................................................................................. 161
4.4. RESUMEN................................................................................................................. 164
11
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
12
ndicedefiguras
FIGURA 1 DIAGRAMA DE CLASES DEL BANCO.................................................................................... 19
FIGURA 2 PUZZLE DE LA PERSISTENCIA............................................................................................... 28
FIGURA 3 DIAGRAMA DE COLABORACIN VENTA TPV...................................................................... 29
FIGURA 4 CASO DE USO ACTUALIZACIN SALDO............................................................................... 38
FIGURA 5 CASO DE USO CIERRE TPV.................................................................................................. 40
FIGURA 6 LA PROGRAMACIN REQUIERE CUALIFICACIN .................................................................. 59
FIGURA 7 PAPELES EN DESARROLLO CON PERSISTENCIA..................................................................... 60
FIGURA 8 EQUIVALENCIA CLASES DEL BANCO EN TABLAS SIN RELACIONES....................................... 71
FIGURA 9 MAPEO DE LAS RELACIONES DE LAS CLASES DEL BANCO EN RDBMS MYSQL.................. 73
FIGURA 10 CLASE PESONA Y DIRECCION............................................................................................ 74
FIGURA 11 DIAGRAMA DE CLASES DE UN RBOL DE CINCO NIVELES Y CINCO HIJ OS SU EQUIVALENTE E-
R................................................................................................................................................. 75
FIGURA 12 DIAGRAMA DE CLASES DE DIRECCIN .............................................................................. 76
FIGURA 13 CORRESPONDENCIA DE DIRECCIN SEGN MTODO DE DIVISIN POR TIPO...................... 77
FIGURA 14 CORRESPONDENCIA VERTICAL J ERARQUA DE HERENCIA DOMICILIO............................... 77
FIGURA 15TABLAS PARA LAS CLASES DE DIRECCION USANDO DIVISIN HORIZONTAL....................... 78
FIGURA 16 DIAGRAMA DE CLASES DEL BANCO.................................................................................. 85
FIGURA 17 DIAGRAMA DE CLASES DE CLIENTES DE CRDITO............................................................ 103
FIGURA 18 DIAGRAMA DE CLASES ILUSTRANDO LA INDEPENDENCIA ENTRE PERSISTENCIA Y HERENCIA.
.................................................................................................................................................. 105
FIGURA 19 DIAGRAMA DE CLASES ILUSTRANDO LA INDEPENDENCIA ENTRE HERENCIA Y PERSISTENCIA
.................................................................................................................................................. 106
FIGURA 20 DIAGRAMA DE ESTADOS DEL CICLO DE VIDA DE INSTANCIA J DO................................... 110
FIGURA 21DIAGRAMA DE CLASES DE J DO........................................................................................ 113
FIGURA 22 DIAGRAMA DE CLASES DE EXCEPCION J DO.................................................................... 116
FIGURA 23 TIEMPO INICIAL NECESARIO PARA PERSISTIR LOS OBJ ETOS VINCULADOS A LA CREACIN DE
UNA CUENTA. ........................................................................................................................... 137
FIGURA 24 TIEMPO PARA PERSISTIR LOS OBJ ETOS IMPLICADOS EN LA CREACIN DE UNA CUENTA,
IGNORANDO EL RETRASO DE PRIMERA OPERACIN.................................................................... 137
FIGURA 25 J DO VS J DBC VARIACIN DEL RENDIMIENTO Y RETRASO.............................................. 138
FIGURA 26 RESULTADOS PRUEBA DE RENDIMIENTO PARA OBJ ETOS COMPLEJ OS............................... 144
FIGURA 27 TIEMPOS DE EJ ECUCIN DEL RECORRIDO TRANSPARENTE DE RBOLES 5 ARIOS
PROFUNDIDAD 5, 1000 VECES ................................................................................................... 144
FIGURA 28 SOBRECARGA DE LA PERSISTENCIA EN LAS PRUEBAS REALIZADAS ................................. 145
FIGURA 29 COMPARATIVA DEL NMERO DE LNEAS DE CDIGO PARA UNA MISMA APLICACIN
ESCRITA CON J DBC Y ODMG.................................................................................................. 148
FIGURA 30 PORCENTAJ E DE REDUCCIN DEL CDIGO J AVA CON ODMG RESPECTO DE J DBC......... 148
FIGURA 31 LNEAS DE CDIGO EN LA APLICACIN DE CLUBMED CON J DO VS ORIGINAL J DBC...... 149
FIGURA 32 REDUCCIN DEL NMERO DE LINEAS EN CLUBMED MODIFICADO PARA J DO................. 149
FIGURA 33 RETORNO DE INVERSIN EN UNA LICENCIA DE J DO........................................................ 154
FIGURA 34 POSICIN DE J DO EN LA PERSISTENCIA J AVA.................................................................. 172
13
ndicedelistadosJava
LISTADO 1 SERIALIZACIN DE UN OBJ ETO CLIENTE ............................................................................ 19
LISTADO 2 GRABAR UN OBJ ETO CLIENTE CON J DBC.......................................................................... 20
LISTADO 3 GRABAR UN OBJ ETO CLIENTE CON SQLJ ........................................................................... 21
LISTADO 4 MODOS DE PERSISTIR CON UN OODMBS......................................................................... 22
LISTADO 5 EJ EMPLO RUTINA CON TRANSPARENCIA DE DATOS........................................................... 25
LISTADO 6 EJ EMPLO SERIALIZACIN EN J AVA .................................................................................... 34
LISTADO 7 MTODO CARGO EN CUENTA............................................................................................. 39
LISTADO 8 ASPECTOS DE LA INTEGRIDAD........................................................................................... 42
LISTADO 9 ASIGNACIN PERSISTENTE J DBC DEL CDIGO DE CUENTA............................................... 42
LISTADO 10 EJ EMPLO DE TRANSPARENCIA DE DATOS......................................................................... 47
LISTADO 11 MTODO CON TRANSPARENCIA DE DATOS....................................................................... 49
LISTADO 12 IDENTIDAD DE LA CLASE CLIENTE EN TABLAS CON MYSQL.......................................... 69
LISTADO 13 CORESPONDENCIA CLASE PERSONA QUE EMBEBE INSTANCIAS DEL TIPO DIRECCION..... 74
LISTADO 14 CLASES CLIENTE Y CUENTA ORIGINAL........................................................................... 86
LISTADO 15 DESCRIPTOR DE PERSISTENCIA DEL BANCO..................................................................... 92
LISTADO 16 MAPEO DE UN RBOL DE OBJ ETOS CON J RELAY............................................................ 93
LISTADO 17 MAPEO DE UN RBOL DE OBJ ETOS CON KODO............................................................... 93
LISTADO 18 TAREA AMPLICAR CLASES CON J DO RI.......................................................................... 94
LISTADO 19 OPERACIONES DE APLICACIN, APPOPER...................................................................... 95
LISTADO 20 CREACIN DE LA BASE DE DATOS CON J DO RI ............................................................... 96
LISTADO 21 APERTURA DE NUEVA CUENTA ....................................................................................... 98
LISTADO 22 OPERACIN LISTADO DE CLIENTES................................................................................. 98
LISTADO 23 CUENTA MTODO TOSTRING........................................................................................... 99
LISTADO 24 CONSULTAR UN CLIENTE Y SUS CUENTAS....................................................................... 99
LISTADO 25 OPERACIN DE CARGO O ABONO................................................................................... 100
LISTADO 26 ELIMINAR INSTANCIAS PERSISTENTES. REFUNDIR MOVIMIENTOS................................. 101
LISTADO 27 PROPAGAR LA ELIMINACIN DE UN CLIENTE A LAS CUENTAS........................................ 101
LISTADO 28 ELIMINAR LAS INSTANCIAS PERSISTENTES VINCULADAS A LA CUENTA......................... 102
LISTADO 29 ILUSTRANDO LA RELACIN ENTRE HERENCIA Y PERSISTENCIA..................................... 105
LISTADO 30 EJ EMPLO DEFICHERO DESCRIPTOR DE PERSISTENCIA .................................................... 119
LISTADO 31 CLASE ORIGINAL EMPLEADO Y SU CLAVE PRIMARIA..................................................... 121
LISTADO 32CLASE EMPLEADO AMPLIADA........................................................................................ 127
LISTADO 33 PRUEBA DE RENDIMIENTO INTERACTIVO J DO............................................................... 135
LISTADO 34 PERSISTIR UNA CUENTA CON J DBC............................................................................... 136
LISTADO 35 CREACIN DE LOS RBOLES DEL TEST........................................................................... 141
LISTADO 36 RECUPERACIN TRANSPARENTE DE LOS RBOLES ........................................................ 142
LISTADO 37 MTODO ADDRESERVATION CON J DO......................................................................... 149
LISTADO 38 MTODO ADDRESERVATION ORIGINAL CON J DBC....................................................... 150
LISTADO 39 CLASE ARRAYOBJ ECT................................................................................................... 151
LISTADO 40 PRUEBA DE RENDIMIENTO DE CREACIN DE RBOLES ODMG..................................... 151
15
ndicedetablas
TABLA 1 CORRESPONDENCIA MODELO OBJ ETOS ESQUEMA RELACIONAL .......................................67
TABLA 2 CLAVES CANDIDATAS EN EL BANCO.....................................................................................68
TABLA 3 ALTERNATIVAS PARA PERSISTENCIA EN LA COMPARATIVA.................................................131
TABLA 4 CUADRO RESUMEN DEL RENDIMIENTO COMPARADO...........................................................146
TABLA 5 NMERO DE REQUISITOS CUMPLIDOS POR SQLJ , J DBC, ODMG Y J DO............................165
16
Capt ul o 1
PERSI STENCI A DE OBJ ETOS:
Conc ept os y Requi si t os
Este captulo presenta el problema de la persistencia de los objetos de las
aplicaciones, y las caractersticas de una solucin para persistir objetos. Se identifica un
conjunto de requisitos, que servir de base para valorar JDO, como solucin Java a la
persistenciadeobjetos.
En primera parte del captulo, para conocer ms de cerca el problema de la
persistencia,sonexpuestosunaseriedeconceptosytrminosfundamentales,empleadosa
lolargodeestedocumento.Enlasegundapartedeestecaptulo,seintentadesmenuzarel
problematratandodescubrirlosrequisitosquesedeberansatisfacer,estudiandodistintas
situaciones donde deben ser guardados y recuperados objetos considerando diferentes
planteamientosyunacomplejidadcreciente.
1.1. Conceptossobrepersistenciadeobjetos
Acontinuacin,seintroducenunaserieconceptosydefiniciones,deformaclaray
sencilla, tratando de evitar distraer la atencin del tema, o promover guerras semnticas
sobre el significado de los trminos empleados y sus acepciones. Nuevas nociones que
viertenluzsobreeltemaquenosinteresa,yalmismotiempo,sirvendebaseparaformar
uncriteriopropio.
1.1.1. Persistencia
Podemosencontrardiferentesdefinicionesdeltrminopersistencia,segndistintos
puntos de vista y autores. Veamos dos que con ms claridad y sencillez, concretan el
conceptodepersistenciadeobjetos.
Laprimera,msantigua,diceas:Eslacapacidaddelprogramadorparaconseguirque
susdatossobrevivanalaejecucindelprocesoqueloscreo,deformaquepuedanserreutilizadosen
otro proceso. Cada objeto, independiente de su tipo, debera poder llegar a ser persistente sin
traduccinexplicita.Tambin,deberaserimplcitoqueelusuarionotuvieraquemoverocopiarlos
datosexpresamenteparaserpersistentes[2].
Esta definicin nos recuerda que es tarea del programador, determinar cuando y
cmo una instancia pasa a ser persistente o deja de serlo, o cuando, debe ser nuevamente
reconstruida; asimismo, que la transformacin de un objeto en su imagen persistente y
viceversa,debesertransparenteparaelprogramador,sinsuintervencin;yquetodoslos
tipos,clases,deberantenerlaposibilidaddequesusinstanciasperduren.
La otra definicin dice as: Persistencia es la capacidad de un lenguaje de
programacinoentornodedesarrollodeprogramacinpara,almacenaryrecuperarelestadodelos
objetosdeformaquesobrevivanalosprocesosquelosmanipulan[19]
Esta definicin indica que el programador no debera preocuparse por el
mecanismointernoquehaceunobjetoserpersistente,seaestemecanismosoportadoporel
propio lenguaje de programacin usado, o por utilidades de programacin para la
persistencia,comolibreras,frameworkocompiladores.
17
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
DelasalternativasestndarparahacerpersistirlosobjetosenJava,comentadasen
la introduccin (la serializacin, JDBC, SQLJ, ODMG 3.0 y JDO), solo ODMG 3.0 y JDO
pueden tener la consideracin de servicio de persistencia de objetos Java. Tambin es
posible proponer utilizar un servicio de persistencia del OMG, PSS 2.0, para persistir
objetos Java, pero este estndar, considera opcionales las transacciones y la persistencia
transparente [22], que son funciones necesarias para ofrecer un servicio de persistencia
eficaz, conforme a las definiciones vistas de persistencia. JDBC, SQLJ requieren que el
programador defina, e implemente las operaciones de persistencia teniendo en cuenta
cmo convertir los objetos en tuplas. Ambos pueden ser utilizados en la construccin de
serviciosdepersistenciaparabasesdedatosrelacionales.Laserializacineselserviciode
persistencia ms bsico, solo ofrece servicios para guardar y recuperar el estado de un
objetosobreficherosyflujosdeentradasalida.
A partir del diagrama de clases UML de la Figura 1, veamos cmo guardar un
objetoCl i ent eenJava,concadaunolosestndaresmencionadosdeSerializacin,JDBC,
SQLJ,ODMG3.0yJDO.
0..*
0..*
0..*
Cliente
+nif:String
Movimiento
#contenedor:Cuenta
+Movimiento
+toString:String
importe:double
motivo:String
fechaValoracion:Dat
fechaOperacion:Date
Cuenta
+Cuenta
+cargo:double
boole
+abono:double
#anotaMovimiento: a
codigocuenta:String
saldo:double
limiteCredito:double
apuntes:Movimiento []
titulares:Cliente []
+Cliente
NIF:String
cartera:Cuenta
Figura1DiagramadeClasesdelBanco
doSer i al i ze
ent e cl i ) throws Except i on {
Fi l eOut put St r eam(
" nuevo_cl i ent e" ) ) ;
Serializacin
private void per si st eMet o
( Cl i
try {
Obj ect Out put St r eamsal i da = new
t St r eam( new Obj ect Out pu
sal i da. wr i t eObj ect ( cl i ) ;
sal i da. cl ose( ) ;
}
catch ( Except i on e) {
e. pr i nt St ackTr ace( ) ;
}
}
Listado1Serializacindeunobjetocliente
19
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
EnJDBC
private void per si st eMet odoJ DBC( Cl i ent e cl
Connect i on con;
ull; Dr i ver dr i ver = n
edSt at ement Pr epar
try {
est ab / / La connexi on ya f ue
eSt at ement pst mt = con. pr epar
" I NSERT I NTO Cl
"
pst mt . set St r i ng(
) ; pst mt . execut e(
/ *guar dar l os o
/ / Cuent as de l a car t
pst mt = con. pr epar eSt a
" I NSERT I NTO Cuent
l ast ; ++i ) {
pst mt . set Doubl e( 2, cu. get Sal do( ) ) ;
pst mt . set Doubl e( 3, cu. get Li mi t eCr edi t o( ) ) ;
pst mt . set St r i ng( 4, cl i . ni f ) ;
pst mt . execut e( ) ;
/ / Par a cada cuent a guar dar l os apunt es y l os t i t ul ar es
int mx = cu. get Ti t ul ar es( ) . l engt h;
for ( int j = 0; j < mx; ++j ) {
/ / . . . gr abar t i t ul ar es
. . .
}
for
/ / . . . gr abar apunt es
. . . . . . . . . . . . .
}
}
pst mt . cl ose( )
( ) con. commi t
}
catch ( Except i on e) {
r i t ackTr ace( ) ; e. p nt S
}
}
Listado2Grabarun
Listado4ModosdepersistirconunOODMBS
Vemosenelanteriorlistado,queelcdigoenamboscasospresentagransimilitud,
nohaycdigoparaconvertirlosobjetosaunformatoapropiadoparalabasededatos,no
es necesaria una traduccin explicita para lograr persistir los objetos. La persistencia
parecemenoscomplicadaconlaserializacin,oconlasOODBMS,seanonoconformesal
estndarODM
medida con JDBC y SQLJ, que con la funcionalidad aportada por servicios de
persistencia similares a los de los ejemplos anteriores, en estos ltimos, el cdigo java es
Porreferencia
22
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
1.1.4.
s caractersticas sern ortogonales, si el uso de una no afecta a la otra, esto es,
dientes entre s. Programas y persistencia sern ortogonales, si la forma en la
quelos
lapersisten
sobre objet a manera con
indepen
caracterstic
programaci Lapersistenciadeunobjetodebeserortogonalaluso,tipoe
identific
manipu o
suidentifica
losobjetos[
3. Facilitarlaintegridadypermitirqueacteelsistemadetipossubyacente,que
podraverificarlaconsistenciaylacorrespondenciadetipos,
base de datos y objetos en programa, la integridad no sera
sarrolladoenlaUniversidad
de Glas
ms independiente de la persistencia, ms en consonancia con la primera de las
definicionesdadasdepersistencia.
Persistenciaortogonal
Do
son indepen
objetossonmanipuladosporestosprogramas,esindependientedelautilizacinde
cia,quelosmismosmecanismosoperarantantosobreobjetospersistentescomo
os transitorios, ambas categoras seran tratadas de la mism
dencia de su caracterstica de persistencia. Ser persistente debera ser una
a intrnseca del objeto, soportada por la infraestructura del entorno de
nypersistencia.
acin.Estoes,cualquierobjetodeberapoderexistireltiempoqueseapreciso,ser
lad sintenerencuenta,siladuracindesuvida,superaalprocesoquelocreo,y
cinnoestarvinculadaalsistemadetipos,comolaposibilidaddarnombresa
2]
Veamoscomoeldensop rrafoanterior,afecta alainteraccinconlabasededatos,
alcdigodenuestrosprogramasyquebeneficiosaporta.Alahoradeplasmarelusodela
persistencia en nuestros programas, una persistencia ortogonal ideal, llevara a no tener
que modificar el cdigo de nuestras clases, salvo aquellas donde debamos introducir las
operaciones que provocan la persistencia para cualquier objeto que sea duradero. Los
beneficiosqueaportalapersistenciaortogonalsonimportantes:mayorescotasdefacilidad
de mantenimiento, correccin, continuidad del cdigo y productividad de desarrollo. Se
consigue:
1. Menos cdigo. Una semntica para expresar las operaciones de persistencia
ms simple de usar y entender. Evita la duplicidad de cdigo uno preparado
parainstanciastransitoriasyotroparainstanciaspersistentes.
2. Evitarlatraduccinexplicitaentreelestadodelosobjetosysurepresentacin
enbasededatos,queredundaenmayorfacilidaddemantenimientoymenos
cdigotambin.
automticamente
entre estados en
responsabilidaddelprogramador.
Todo lo visto en este apartado apunta la conveniencia de usar persistencia
ortogonal. En la prctica conseguir persistencia ortogonal completa no es fcil,
habitualmenteencontraremoslimitaciones.Habrclasesdeobjetosquenosonsoportadas
por los servicios de persistencia, bien por compromisos de diseo, como la dificultad de
implementacin; bien porque cabe pensar que determinados objetos no tienen sentido
fuera del contexto de ejecucin concreto de un proceso, como por ejemplo un puerto de
comunicacionesparaIP.Noobstante,enelproyectoPjama,de
gow se da soporte a tipos de objetos propios del contexto de ejecucin [33]. Para
lograr una persistencia lo ms ortogonal posible, los servicios de persistencia adoptan
distintos enfoques, unos, necesitan que el cdigo de la clases sea modificado, en otros,
debemos incluir meta informacin en forma de marcas, comentarios, ficheros,... para un
preprocesadordecdigofuenteuobjeto,querealizaloscambiosnecesariosparaconseguir
persistencia,y en otros, todala informacin necesaria es obtenida en tiempo de ejecucin,
23
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
odeinterfacesdeprogramacin.
a e r d
mbindeberanserguardadasorecuperadas[19].Deotro
modo, cuando el objeto fuese recuperado, llegara a estar incompleto, sera inconsistente
ado. En la Figura1, si una cuentatiene movimientos, estos
persistircuandolacuentaseaguardada,yviceversa.
1.1.6.
unobjetopersistente,losobjetosdelcierredepersistenciadeunobjeto
sonhec
1.1.7.
tos, el
clases
nadosen
e programacin elegido, no es necesario
se de datos automticamente, cuando las
s del estado de objetos
osestadosdelosobjetos
sonrecuperadosyactualiza enlasemnticade
referenc
aesuna
de
persiste ciaortogonaltotal,eselcasodequedeterminadasclasesnopuedanpersistir,esto
concreta
1.1.8.
programacinusado,hay
una falta de correspondencia (impedance mismatch) entre la base de datos y lenguaje de
rrespondencia,quedefinacomoun
claseseconvierteendatossobreelmodeloofrecidoporsistemaquealbergarelestadode
losobje
uctivo.
1.2. Requ
que que sea considerado, estas funcionalidades
cambian
de memoria (caches) y la gestin del almacenamiento son las
cuestiones crticas; en otro rea, el diseador de componentes, muy posiblemente, estara
para el proceso. La rutina siguiente tal cual est, puede ser aplicada sobre una coleccin
quecontengaalgunoselementospersistentesosolotemporales,debeserindiferente.
private void r ut i naConTr anspar enci aDat os( Col l ect i on cl l Cuent as) {
final double xl c = 1. 10;
I t er at or i t = cl l Cuent as. i t er at or ( ) ;
while ( i t . hasNext ( ) ) {
Cuent a cu = ( Cuent a) i t . next ( ) ;
cu. set Li mi t eCr edi t o( cu. get Li mi t eCr edi t o( ) *xl c) ;
Listado5Ejemplorutinacontransparenciadedatos.
Nodebemosconfundirtransparenciaconpersistenciaortogonal,laprimer
consecuencia de la segunda. Podemos encontrar transparencia de datos sin disponer
n
mentesuponequelasolucinnoseraortogonal,independiente,respectoeltipo.
Faltadecorrespondenciaentreclasesydatos
Cuando trabajamos con sistemas gestores de datos, como bases de datos
relacionales,ficheros,basesdedatosdocumentalesXML,etc.,cuyomodelodatosnotiene
unaequivalenciadirectaconelmodelodeobjetosdellenguajede
programacin,esnecesarioestablecerunmodelodeco
tos.Aestaequivalenciaentrelaclaseylosdatos,sedenominaaqucorrespondencia
clasedatos(objectmapping).Elcasoparticulardelacorrespondenciaentreclasesytablasen
un RDBMS, es la correspondencia objetoregistros. Utilizaremos el trmino mapear, para
sealar al proceso de definicin de la correspondencia entre las clases de los objetos
persistentesylosmodelosdedatos,elprocesopuedeimplicarcambiosenambosladosde
la correspondencia, en el modelo de clases creado o modificado para asumir ciertos
modelosdedatos,yalcontrario,elmodelodedatospuedeserdiseadoocambiado,para
permitirunacorrespondenciamseficienteyeficazconciertosmodelosdeclases.
Hemosvistounabreverelacindelosconceptosmsrelevantesconcernientesala
cuestin de la persistencia. Las definiciones de persistencia vistas nos invitan a emplear
unapersistenciaquenocambielaformadetrabajarconellenguajedeprogramacin,que
actudeformatransparenteyconsistente,dondeelmodelodeclasesyelmodelodedatos
sonlamismacosa,yqueseaunapersistenciaortogonal.Losbeneficiossernuncdigocon
menoslneas,msfcildemantener,mscorrectoyprod
isitosparaunserviciodepersistencia
Intentaremos ahora establecer cuales son las funcionalidades a soportar por un
servicio de persistencia, teniendo en cuenta los aspectos tcnicos, los organizativos y
econmicos. Dependiendo del enfo
,tendrnmayoromenorimportancia,yalgunasdeellassernincompatibles.Siel
punto de vista escogido es el desarrollo de programas rpido, nos interesar un servicio
simple, transparente y sencillo de usar, que cubra los requisitos esenciales; si nuestro
intersesconseguirunelevadonmerodetransacciones,omanejargrandesvolmenesde
informacin de bases de datos relaciones, la correspondencia entre clases y relaciones, el
rendimiento, la jerarqua
25
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
acin con el
marco (fr uni
ial, pues toda tecnologa no puede sustentarse o evolucionar sin el
respaldo
Rumbaugh, Ivar Jacobson,
ClausP.
1.2.1.
ente desde diferentes sistemas gestores de datos,
que sea
unserviciodepersistencia,talycomoha
enlaprctica,lasprestaciones
delserv
sautoresy,ensegundotermino,respectodelcosteybeneficio
aportad
otros
dispuesto a penalizar el rendimiento, si con ello consigue una mejor integr
amework) de componentes, o una mayor formidad en el tratamiento de
distintas fuentes de datos; un gestor o directivo le importa ms la tasa de retorno de la
inversin, la productividad, la disponibilidad de un mayor nmero de proveedores, de
profesionalesymenorescostesdeformacin,etc.Comopodemosimaginar,estableceruna
solucinvalidaparatodoslosenfoquesestareadifcil.
Los requisitos sern considerados sobre tres dimensiones: tecnolgica,
organizacionalyeconmica.Ladimensintecnolgicarecogelosmecanismosquedebera
cubrir un servicio de persistencia. Respecto a la organizacin nos interesa conocer el
impacto provocado por la adopcin de un servicio de persistencia como es JDO. El factor
econmico es esenc
deunmercadoslido[31].
Paraacometerlatarea,noshemosfijadoenlostrabajosincluidosenlasbibliografa
deautoresreconocidoscomoS.W.Ambler,M.Atkinson,K.Dittrich,CraigLarman,Arthur
M. Keller, Bertino, C. Szypersky, T. Reenskaug, G. Booch, J.
PrieseyWolfangKeller,RobertOrfali,DavidJordan,cuyasreferenciasaparecena
msadelanteeneltexto.
Dimensintecnolgica.Requisitosestructuralesyfuncionales
Queremos determinar qu mecanismos debe proporcionar un buen sistema de
persistencia que asuma los enfoques antes expuestos. Trataremos de conseguir especificar
las funcionalidades de un servicio de persistencia con transparencia de datos, capacidad
para guardar y recuperar concurrentem
ortogonal en la mayor medida posible, robusto, consistente, eficaz, fcil de usar y
extensible. Cada funcionalidad va a ser considerada respecto a su influencia en el
rendimiento, mantenimiento y coste de la solucin. En primer lugar son consideradas las
cualidadesestructuralesquedeberatenerunserviciodepersistencia.Paraseguidamente,
introducirlafuncionalidadqueseesperaacometa
sidodescritoantes.
La ilustracin de ejemplos y situaciones, es utilizada para poner de manifiesto los
requisitosparaobtenerlafuncionalidadesperada.Ejemplosquecubrirnunosrequisitosy
servirn para mostrar otros. Escenarios cuya descripcin permitir presentar distintas
cuestionesapartirdelascualesserexpuestalafuncionalidad.
Comonotodoslosrequisitostcnicossoncubiertos
iciosernclasificadasenesencialesuopcionalesdeacuerdoalniveldeexigenciade
su soporte. Exigencia determinada,enprimer lugar, a la necesidad o conveniencia tcnica
segnlaopinindedistinto
oalrendimientoylamantenibilidad.Habrtambinrequisitosquesonsoportados
directamenteporlosmecanismossubyacentes,yqueportanto,nonecesitanserplasmados
a nivel del servicio de persistencia, y que son el reflejo de los presentes en los
mecanismosdepersistenciautilizados.
El documento de Scott W. Ambler Design of a Robust Persistence Layer For
Relational Databases[32], es el fundamento y guin inicial de los siguientes apartados.
Base que es ampliada para considerar un punto de vista ms general, incorporando
aportacionesdelosautoresmencionados.
26
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
1.2.1.1.
lidades y capacidades elegidas como
ccin de la funcionalidad. El aspecto estructural determina en
buena m
s son las bases sobre la que
construirlafuncionalidad
Pretender El
planteamiento a es son
considerados verdaderas autoridades a del diseo de programas,
ente, dentro de la construccin de programas orientados a objetos. Pero
loscriterios,principiosyreglasdecarctergeneralampliamenteaceptados,
noessu
.Nosignificaesto,quela
a cubrir la complejidad de la tarea encomendada, pero el planteamiento,
entacinydocumentacinnodebenparecercuencosdeespaguetis.Debera
sertom
abilidad va a
depend
menteevitandoresultadosno
espe o lesmarcados,quedebeser
con u
anormales.Msadelanteveremosquefuncionalidadserequiere.
Modularidad
Lasolucinaunproblemacomplejopasaporestablecerunaarquitecturamodular,
que estructura el problema en distintas partes, cuyas soluciones contribuyen a la solucin
Estructurales
Los requisitos estructurales, son las cua
referente para la constru
edida como es conseguida la funcionalidad, cual ser la continuidad, la facilidad
deuso,lacapacidaddeintegracin,laeficaciaylaeficiencia,elcoste,...factorestodosellos
quedeterminanlacalidaddelassolucionesimplementadas.
Cules son las propiedades estructurales que debe tener todo servicio de
persistencia? Cul es la estructura ms indicada? Cule
?
contestar directamente de la forma adecuada es una osada.
qu, es asumir las pautas y recomendaciones marcadas por quien
de la disciplin
primordialm
transcribiraqu
ficiente,almenos,losprincipalesaspectosdebenserconcretados.Evidentemente,
que un servicio de persistencia debera ser diseado de una forma disciplinada, rigurosa,
consistente, correcta, robusta, eficaz, extensible, reutilizable, eficiente, transportable,
funcional,oportuna,compatibleymanejable[19].
Pasemos ahora a intentar concretar algunas de las cualidades o propiedades, que
debensatisfacerunbuenserviciodepersistencia.
Simplicidadysencillez
Un requisito primordial para lograr una buena arquitectura es intentar mantener la
simplicidadylasencillezdelasolucin,evitarlosartificiosinnecesarios
solucin no deb
diseo,implem
adaenconsideracinlasiguientemximadeHoare:
Haydosformasdeconstruirundiseodesoftware:
Unaformaeshacerlotansimplequeobviamentenohaydeficiencias
Ylaotraformaeshacerlotancomplicadoquenohaydeficienciasobvias.
C.A.R.Hoare
Fiabilidad
Un servicio de persistencia debera mostrar una alta probabilidad de funcionar
correctamentebajotodacircunstancia.Lafiabilidadoconfiabilidadesunodelosfundamentos
bsicos sobre los que se sustenta toda solucin estructurada. La confi
er,engranmedida,delaspropiedadesestructuralescomoelintercambiodedatos,
lasealizacinytratamientodecondicionesdeerror,lagestindeexcepciones,iniciacin
devariables,etctera.Tododebesercuidadosamentepensadoyllevadoacabo.
Unserviciodepersistenciadebeserfiable,funcionarcorrecta
rad soimprevisibles.Larobustezesunodelosobjetivosinicia
seg ido gracias a un diseo que contemple el tratamiento y reaccin ante situaciones
27
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
completa del problema inicial. Esto es, la solucin a un problema complejo, pasa por la
creacindemdulosqueensambladosdefinenelsistemaqueplasmalasolucin.
Una buena modularidad facilita la consecucin de tres propiedades esenciales a
toda solucin de programacin: la ocultacin de la informacin, la facilidad de
mantenimiento y el desarrollo en paralelo de las partes. Debemos recordar que toda
construccin orientada objetos debe seguir una arquitectura guiada por los tipos de los
objetos que manipula [7]. Asimismo, que la separacin de conceptos frente a su coste de
realizacin,ayudaaconcretarladivisinenmdulosdelafuncionalidad0.
Algunasdelaspropuestasrevisadas[41],[42],[14],[6],[24],[32]y[4],difierenenlos
componentes concretos que forman la arquitectura pero desde punto de vista ms
generalcoincidenen:
un
Estructurarlasresponsabilidadesencapasdeservicios.
Ladistincinclaradedoscapasunaobjetualyotradegestindelalmacenamiento.
Figura2Puzzledelapersistencia
Laestructurageneralencapas,facilitalaorganizacindelosserviciosendistintos
deloscualesconstituyenelsoporteparalosserviciosdelnivelsuperiory
es sustentado, que
cen
a
abstracciones bien conocidas, con patrones de solucin
bien im
osdepersistenciayelmundodelosobjetos.Elcostede
separar en capas un servicio de persistencia debe ser recuperado por un aumento en la
mantenibilidadyunamsfc
Encaps
niveles,cadauno
a su vez, por los servicios necesita del nivel inferior, consiguiendouna
altacohesin,bajoacoplamientoyfacilidadparalaencapsulacin.Ejemplosclsicossonlas
pila de servicios para red OSI y TCP/IP. Para estudiar ms detenidamente esta forma de
estructurar los servicios de persistencia, para el caso particular de las bases de datos
relacionalesver[12][6][32].
La separacin en una capa de objetos y otra para administrar el alma amiento,
contribuyealaseparacindelosconceptosdelaorientacinobjetos,deaquellosrelativosa
laprogramacindebasesdedatos,sistemasdearchivososerviciosdeempresa.Cadaun
estas reas est representada por
plantados dentro sus dominios de aplicacin. De esta forma, podrn ser aplicadas
las mejores soluciones a cada abstraccin. Entre ambas capas, se sitan uno o ms niveles
de serviciosque cubren parte de la funcionalidad requeridayla falta de correspondencia,
entrelosmundosdelosmecanism
ilpuestaapuntodelrendimiento[32].
ulacin
Scott W. Ambler [32] propone que idealmente solo se deberan mandar los
mensajesdesalvar,borraryrecuperaralobjetoencuestinocultndosetododetallesobreel
28
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
laocultacindelainformacin.
mecanismo concreto de persistencia. En [42] de Wolfgang Keller podemos encontrar
tambin, la justificacin sobre la conveniencia de que un servicio de persistencia debe
encapsularlosdetallesdelosmecanismosdepersistenciasubyacentes.
As pues, alcanzar la encapsulacin de los mecanismos de persistencia es un requisito
esencial.Laestructuracinencapasfacilitalograrelrequisitode
DiferentesEstilosdeAplicacin
Veamos a un ejemplo que servir como ilustracin de nuevos requisitos, una
secuenciasimpledeloquesucedecuandovamosapagarlacompradelsupermercadocon
unatarjetadepagoelectrnico...
TPV Servicio Autorizaci
<<actor>>
Cajero
2.2: mostrarTicket
2.1: SolicitarAprobacion
1:[*] //introducirProducto
2: efectuarPagoconTarjeta
sistema
coste [41] [42] [32] [7] [28] [25]
[8].
arquitecturas de aplicaciones que han sido ampliamente
nuevas entran en escena como Model Driven Architecture (MDA) o los
s en .NET. Todas ellas pueden ser clasificadas de forma genrica en
arquitec
uitecturas implica un mayor coste de
que enla prctica lamayor partede los productos eligenun modelo de
a satisfacer un determinado sector del mercado, y delegan en el
desarro
poda ser
solapad con distintasaplicacionesenelmismosistema,peor
an, la ser interrumpida, a riesgo de hundir todo el
sistema. e no era escalable frente al
nmero
Extens li
er capaces de aadir nuevas clases a las aplicaciones,
deberamos r los mecanismos de persistencia empleados. Tambin
tendra e os. De hecho con una modularidad
adecuad
s gestores de bases de datos relacionales clsicos no han cubierto sus requisitos de
persistencia en trminos de rendimiento, mantenimiento y
Es requisito esencial soportar, las aplicaciones de la primera categora, las
aplicacionesdelosnegocios,querepresentanlamayoradelasaplicacionesenuso.Laotra
categoraesconsideradacomounrequisitoopcional.
Diferentesarquitecturas
Las funcionalidades de una aplicacin deben ser organizadas siguiendo algn
modelo de arquitectura, que, cuando la aplicacin es ejecutada, determina la interaccin
entre sus funcionalidades y donde son desplegadas en el entorno de ejecucin. En la
actualidad coexisten distintas
aceptadas, y otras
modelos basado
turas monolticas, las cliente/servidor en dos o ms capas y las distribuidas de
objetos. En todas tendremos la necesidad de la persistencia de datos. Arquitecturas
diferentes, con necesidades de persistencia distintas, que conducen a que es necesario,
soportar diferentes arquitecturas. Las opiniones de los trabajos vistos en este trabajo de S.
Ambler [32], T.Reenskaug [25] , C. Priese [24], y B.Meyer [19], recogen esta necesidad de
diferentesarquitecturas
Es necesario que un buen servicio de persistencia ofrezca soporte a los modelos clsicos de
arquitecturamonoltico,cliente/servidorendosomscapasydistribuidasdeobjetos.
Esto supone para el diseador de servicios de persistencia seguir ciertas
especificaciones que garanticen la integracin del servicio de persistencia en las
arquitecturas objetivo. Soportar diferentes arq
desarrollo, por lo
arquitectura con vistas
lladorlaposibleadaptacinalmodelodearquitecturaescogida,locualnosiempre
esposible.Quizsfueramsadecuadoexpresaresterequisitoenformanegativacomo:
Esesencialqueunserviciodepersistencianodebaimponerrestriccionesestructuralesque
impidansuinclusiny/oadaptacinadiferentesarquitecturas.
Unejemplodelosinconvenientesdenoasumirelrequisitoexpuesto,eselusode
cdigonoreentrantequeevitaramantenerenejecucinmsdeunaimagendeunmismo
ejecutable o librera. Hace ya unos aos, programando aplicaciones de gestin en un
entorno grfico muy conocido, las libreras proporcionadas para acceder a una base de
datos archconocida, no permitan aprovechar la capacidad de ejecucin concurrente en
hebras del entorno grfico, la ejecucin de consultas con mltiples registros no
a lapresentacinyedicinen
nzada una consulta esta no poda
Esta limitacin forzaba el diseo de la aplicacin qu
de registrosolacarga.
ibi dad
Al igual que deberamos s
ser capaces de sustitui
qu ser posible incorporar nuevos mecanism
a deberaser posible extenderel serviciode persistenciacon nuevosmecanismos.
Que un servicio de persistencia sea extensible o no, es una decisin de diseo motivo de
30
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
los programas
odificando su funcionalidad, en este sentido sera preciso
n a los servicios de persistencia. La extensibilidad es una
cualidad
noma de los desarrollos, mayor
product
nacin de valores por defecto, el nmero de servicios disponible, la
compat
indelcdigo.
cillo o
iodepersistencia.Lafacilidaddeusopuedollegaraserun
el xito de un buen servicio de persistencia. Un servicio
puedes
de datos o peticiones de servicio, con un rendimiento y
productividad
s p
controversia. De un lado los programadores de los servicios de persistencia querrn
disponer de la posibilidad adaptar el servicio a sus necesidades dado el caso; de otro los
fabricantes,celososguardianesdelcdigodesusimplementaciones.Laorientacinobjetos
permite satisfacer a ambas partes. Debemos tener en cuenta que
evolucionan, incorporando o m
dotar de extensibilidad tambi
deseabledeunbuensistemadepersistencia.
Facilidaddeuso
Lafacilidaddemanejoesotradelaspropiedadesqueseesperatengatodoservicio
de persistencia. En los apartados anteriores queda de manifiesto la conveniencia, de que
unserviciodepersistenciadebepresentarsusserviciosdeformaclara,concisa,oportunay
manejable. Ser fcil de usar contribuye a conseguir la eco
ividad y menor coste en horas/hombre. Esta cualidad garantiza la aceptacin y el
xito de implantacin de un servicio de persistencia. Cosas tales como la nomenclatura
consistente de las caractersticas, la flexibilidad y expresividad en la definicin de las
operaciones, la asig
ibilidad con otros tipos de objetos, el empleo de asistentes para automatizar las
principales tareas y el empaquetamiento y distribucin, son elementos que ayudan a
conseguirunserviciomsfcildeusar.Lafacilidaddeusodeberarepercutiren:
Unmenoresfuerzodediseo.
Menorcosteyesfuerzodeproducc
Facilidadparalaprueba.
Mejorverificabilidad.
Mejormantenibilidad.
Facilidaddeinstalacinyconfiguracin.
Todos estos factores debern ser tenidos en cuenta, an cuando su medida no
siempre es fcil. El sentido comn ser la mejor herramienta para decidir si es sen
complicadoelusodeunservic
factor crtico determinante en
erelmseficazyeficiente,elmsbaratoperosinoesfcildeusar,tendrseveras
dificultadesalcanzarseraceptadoeimplantadoenlasorganizaciones.
Escalabilidadyrendimiento
La arquitectura de una solucin, afecta a su capacidad para acometer aumentos
importantes en el volumen
acordes. La escalabilidad es uno de los objetivos iniciales que no es
alcanzable, sin un diseo preparado frente a grandes variaciones en la carga. La
escalabilidad es una cualidad necesaria para un servicio de persistencia, porque al ser un
intermediarioentrelosobjetosylosserviciosdedatos,seconvierteenunfactorcrticoque
puedellegaraserelcuellodebotelladetodounsistema.
Se espera que un servicio de persistencia se adapte a las fluctuaciones en el volumen de
datosypeticionesofreciendoelserviciomseficazencadacaso.Estoes,unserviciodepersistencia
deberaserescalable.
Paramejorarelrendimiento,elaccesoalosobjetosdebeseroptimizadoytambin
elacceso alo mecanismosde ersistencia,paralocual,sedebemaximizarelrendimiento
31
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
de m
introdu
toasncronodecomunicacionesyoperacionesconpersistencia.
corresp yrecuperardatosyobjetos,perosinloscules
lasolucin ad. Las propuestasde [41][32]
incorpo serviciosdepersistencia.
tacin
unserviciodepersistenciapuedeserefectuadadedistintas
formas,
etadas como fuentes o binarios, a sofisticados
framewo
Idealmente, la persistencia ortogonal podra ser una caracterstica del lenguaje de
is y semntica seran extendidas para incluirla, incluyendo al
nes y modificadores en declaracin de los tipos, atributos y
doparecequetiendealasopcionesenlatadas,siguiendolosmodelos
iones de servicios y framework. Todas las realizaciones, que
dosaspectosprincipales:
acin acerca de qu ser persistente y
formacin estar incluida en el
rte de las fuentes, incluidos los
sitorios son ficheros comunes de texto,
ros XML e incluso sofisticados modelos de objetosdatos, almacenados en
etossernpersistentes,y
las operaciones de
fuente, en el cdigo
os de un sencillo ejemplo para
in de
los ecanismos y minimizar el nmero de peticiones a los mismos [41]. Esto lleva a
cirenlaarquitecturadelservicioelementoscomo:
Cachesdedatosyobjetos.
Encolamientodeoperaciones.
Procesamien
Mecanismosparaoptimizarlaconcurrencia.
Cada uno de estos elementos, le corresponder una funcionalidad que no
ondeconelpuroobjetivodeguardar
al problema de la persistencia no sera de utilid
ranlanecesidaddeoptimizarelrendimientodelos
Modelosdeimplemen
Laimplementacinde
cadaunadelascualespresentasusventajaseinconvenientes,tienesuspartidarios
ysusdisidentes.Encontraremosenelmercado,unabanicoderealizaciones,quevandesde
las clsicas colecciones de clases empaqu
rk,dotadosconprogramasasistenteparacadaactividaddelprocesodecreacin,
mantenimientoyejecucin.
Cada una de las opciones que podremos encontrar, seguramente, ser la ms
adecuada a cada caso, en funcin de los requisitos, la cultura de desarrollo y las
disponibilidadespresupuestarias.Alahoradeescoger,deberemostenermuypresentela
flexibilidad para poder amoldar la implementacin del servicio de persistencia a nuestras
necesidades.
programacin, su sintax
nuevas instruccio efecto,
Pero,elmerca objetos.
sicos de colecc cl
encontraremos,presentanencomn
La utilizacin de meta datos. Meta inform
cual ser la correspondencia clasetipo. La meta in
ios a pa cdigo fuente de la clases o en repositor
s repo utilizados para la persistencia. Lo
fiche
basesdedatos.
Lainclusinautomticadecdigoenlasclasescuyosobj
en los mtodos de las clases cuyas instancias conducen
persistencia. El cdigo aadido podr ser en el cdigo
ejecutable,ounamezcladeambos.
Pasemosahoraaestudiarlosaspectosfuncionales.
1.2.1.2. Funcionalidad
Guardaryrecuperarobjetos
Este es el requisito esencial por excelencia. Partim
ayudar a descubrir nuevas funcionalidades requeridas. El ejemplo es la continuac
odondeseguardabauncliente. aquelvist
32
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
rtida,lomsinmediatoesaprovecharloquetenemosms
bjetos,usarlainterfazSer i al i zabl equerecogeslola
obliga,enprincipio,aimplementarmtodoalguno.La
cuyas instancias deseamos hacer persistentes, tiene que ser declarada como
reun
m.
lic static void
est RWSer i al i ze t s = new Test RWSer i al i ze( ) ;
cl i AGuar dar = new Cl i ent e( ) ;
ll;
t s. per si st eMet odoSer i a
cl i Recuper ado = t s. r ecuper aMet odoSer i al i ze( i dCl i ) ;
i u d
if
}
catch
e. pr i nt St ackTr ace( ) ;
}
}
private i al i ze( Cl i ent e cl i , St r i ng i dExt er no)
throws
{
try {
Obj ect Out put St r eamsal i da = new Obj ect Out put St r eam( new
sal i
sal i
}
catch
}
distinta
SGBDR. La ses de datos relacionales, disponen tambin de una identidad
generad
zar los
archivo
ilizar identificadores asignados por los usuarios o
beraofreceralasaplicacionesunsistemadeidentidado
claves,
.
nteoindirectamente,con
el objet
solo depsito, todo contenido en una unidad que no
permite
re referencias internas en ejecucin y la
identida
ademsdeladeidentidadasignadaporelsistema,loqueesunaclaveprimariaen
s principales ba
aautomticamenteparaidentificaralosregistros,queesindependienteydistinta
de la designacin de clave primaria, los identificadores de fila, ambos sirven para
establecer la identidad de una fila de datos. Los sistemas de archivos tambin presentan
modelos de identificacin que establecen como nombrar de modo singular y locali
squemanejan.
Losidentificadorespodrnteneronosignificadoparaelusuario,peroestilpoder
dar un nombre a los objetos persistentes, mediante el cual buscar y localizar los objetos
almacenados en los sistemas gestores de datos, nombrar los objetos es para nosotros un
modo natural deidentificar. Estndares como ODMG 3.0, CORBA naming servicesyJava
JNI,ofrecenestaposibilidadaunqueconperspectivasdistintas.
Es un requisito esencial que todo servicio de persistencia soporte identificadores de objetos
utilizados para guardar, y acceder posteriormente, a los estados de los objetos persistentes.
Opcionalmentedeberaserposibleemplearnombres,identificadoresasignadosporelprogramadoro
usuario,paralalocalizacindeobjetospersistentes,parasuidentificacin.
Hemosvistoquelosmecanismosdepersistenciaofrecenfrmulasdiferentes,para
establecer la identidad de los datos, los servicios de persistencia deben aprovechar la
capacidaddelosmecanismosparaestableceryasegurarlaidentidad.Enconcreto,conlos
sistemas relacionales, es preciso facilitar la integracin de claves primarias e identidad de los
objetospersistentes.
La posibilidad de ut
programadores,llevaaquesede
independiente de los mecanismos de persistencia soportados, esto aporta
flexibilidad frente a cambios del mecanismo empleado. Un servicio de persistencia debera
ofrecerlosmediosparadefinirymanejarmodelosdeidentidadbasadosen:
Laidentidadasignadaporlosmecanismosdepersistencia.
Identidad asignada mediante la aplicacin bien con nombres [2], bien con claves
primarias[41]
Los trabajos de G.Booch, J. Rumbaugh, A. Keller, y S. Ambler ensean distintos
modelosdesoportedelasclavesprimariasparasistemasrelacionales.En[7]y[4]podemos
llegaraconoceralgunosdelosmodelosusadosporlossistemasbasadosenobjetos.
Volvamos sobre el ejemplo anterior. Sabemos que Ser i al i zabl e, asegura una
persistenciaporalcance,todoslosobjetosrelacionadosdirectame
o a almacenar o recuperar son automticamente procesados. As pues, bastar con
designarelidentificadordelobjetosingularrazdelcierredepersistencia,paraalcanzarel
objetivo de guardar y recuperar objetos. La serializacin empaqueta el cierre de
persistencia de un objeto en un
accederalosobjetoscontenidosporseparado.Sideseamosaccederporseparadoa
losobjetoscontenidos,cadaunodelosobjetos,debeserguardadodeformaindependiente,
asignarle una identidad persistente, y de alguna forma mantener el vnculo de las
referencias internas existentes entre estos objetos y los correspondientes identificadores
asignados. En definitiva, la equivalencia ent
d persistente, debe ser manejada por el servicio de persistencia, de forma que se
mantenga la integridad de las relaciones entre objetos persistentes. Los estados
almacenadosestnrelacionadosentres,comolosobjetosalosquecorresponden,elcierre
depersistenciaquedatambinalmacenadocomounarelacinentreestadosdelosobjetos.
35
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
ridad.[1][2]
los tipos bsicos o por defecto,
comop
tiposoclasesysuscorrespondientestipos,quedefinensuestadopersistenteen
tos.Laconversindeberaserefectuadasinnecesidaddeaadircdigoadicional,
sinlain
jetos construidos
conotro s.Unservicio
depersis
t o que un
conjunto de conjuntos son crticos pues son la forma
natural ndo real, las tuplas son la forma
natural
capturan el cionar
estructuradosqueimplementanelconjunto,tuplaylista.Generalizando,unserviciodepersistencia
deberas
Latraduccindereferenciasentiempodeejecucinalaidentidadpersistente,yviceversa,
debeserefectuadadeformaconsistenteporelserviciodepersistencia.
Correspondenciaclasesdatos
Alguardaryrecuperarlosobjetos,existeunafaltadecorrespondenciaentretipos
delosobjetosylostiposdelosdatosenlosalmacenesdepersistencia,excepcinhechade
los gestores de datos objetuales, que debe ser resulta al hacer persistir los objetos en un
servicio de datos, para ello hay identificar qu clases sern persistentes, esto es, definir la
correspondencia de clases con las entidades de los servicios de datos. La correspondencia
permitealserviciodepersistenciallevaracabointercambioentreambossistemasdetipos
coninteg
Un servicio de persistencia debera proporcionar los medios para expresar y establecer la
correspondenciaentreelmodelodeclasesylosesquemasdelosserviciosdedatos.Lasdiferencias
entre los sistemas de tipos del lenguaje y los mecanismos de persistencia, exigen la
definicin de las de equivalencias entre estos, tanto para
aralostiposcomplejoscomosonlasestructurasdedatos.
Un servicio de persistencia con transparencia de datos debera producir la conversin
automticaentrelos
losdepsitosdeda
tervencindelprogramador.
Lacorrespondenciadebecubrirelcasodelasclasessondefinidasapartirdeotras
de las que dependen, resultandoas que se definen objetos complejos, ob
sobjetos,ademsdelostiposbsicoscomoenteros,carcterydem
tenciadebesoportarobjetoscomplejos[2].
En re los objetos complejos estn el conjunt , la tupla y la lista forman
constructores bsicos esenciales. Los
de representar colecciones de objetos del mu
representar las propiedades de un concepto u objeto y las listas o series (array)
orden [2]. Un servicio de persistencia debera propor soporte a los tipos
oportarcoleccionespersistentes.
Lasrelacionesentreobjetostambintienenqueserconvertidassobrelosdatos,as
que la herencia, la agregacin, la composicin, la simple asociacin y el polimorfismo
deben ser representados con datos usando los elementos proporcionados por los
mecanismosde persistencia para perdurar de formaeficaz y eficiente, la tareano siempre
esfcil.Bastedemomentoreconocerqueunserviciodepersistenciadefacilitarlosmediospara
expresaryplasmarlasrelacionesentrelosobjetosentrminosdelosmecanismosdepersistenciaque
permite.
Enparticular,elmapeoconlasbasesdedatosrelacionalesesobjetodenumerosos
trabajosyesfuerzos,entreotrosmencionarlaspropuestasdeJ.Rumbaugh[30],C.Larman
[18], A. Keller [41], W. Keller [42], S. Ambler [32], o R.G.G.Cattell [7] consideran la
problemticadelmapeosobrebasesdedatosrelacionales.
La correspondencia clasesdatos, la informacin sobre el mapeo, debe ser accesible en
tiempo de ejecucin para asegurar la integridad con el conocimiento que se obtiene de la
correspondencia.
36
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
aconsiderarlaconvenienciadealcanzarlamayorindependencia
posible.
elcdigoobjeto,debesermodificado,ademsdelimitarlostiposdedatos
quepueden algnentornocomoGemStone,dondela
maquin extensiones sintcticas para sealar
atributo imarias, etc.; y con la modificacin del papel de algunos
objetos, medio para alcanzar persistencia, como las variables
globales entes, consiguiendo as una solucin sin fisuras entre
lenguaj b
l ang. t hr eads.
licacionesnonecesitanguardaryrecuperarunthread
que no tienen sentido fuera del proceso que los usa.
Hay tra
moladefinicinmencionadaalprincipio.Revisandoalgunosdelosproductos
comerci
evitarmodificarelfuenteimplementando
capacidaddepersistenciaalcdigoobjeto
ejecutable, un sencillo, y fcil de usar archivo de configuracin, es utilizado para indicar
quevaa serpersistente.
a independencia completa de la persistencia frente a Java, persistencia ortogonal
al tipo, uso e identificacin, es costosa y compleja de implementar, podra a llegar a
necesita del cambio en la especificacin de Java como lenguaje. Esto podra suponer un
gran revs ala ampliaaceptacin e implantacin de Java. Pero sin elevadaindependencia
nohayt ansparenciadedatos,queesunodelosobjetivosaconseguir.
Adaptarelcdigoyasum lahabitualparaobtener
persistencia bastante independient los programas y de los
sistema
relacional,cumplatodoslasreglasdeCodd[8]ynoporelloseabandonsu
uso.En
Ortogonalidad
Enlasdefinicionesyconceptospresentadossobrepersistencia,yenlaintroduccin
deestaseccin,conducen
Desdeelpuntodevistadeprogramador,estoimplicaconseguir:
Nonecesitarmodificarelcdigofuentedelasclasesymtodos.
Independencia de uso, los mtodos manipulan objetos persistentes y
transitoriosusandoelmismocdigo.
Transparenciadedatos,esquemaesnico.
Poder utilizar claves primarias, asignar nombres o identificadores para
denominar,localizaryrecuperarobjetospersistentes.
EnningunodeloslenguajesdeprogramacinmshabitualescomoC,C++,VBasic,
Delphi, Eiffel, es posible conseguir una persistencia ortogonal total. De alguna forma el
cdigofuenteo
persistir.EnSmalltalk,encontramos
a virtual Smalltalk es extendida con ciertas
s transitorios y claves pr
que se convierten en el
, o las colecciones persist
ey asededatosdeobjetos,dotadaunaortogonalidadimportante
EnJava,haytiposdeobjetosquenopuedenserpersistentesconlatcnicadescrita
de la serializacin, como por ejemplo, las instancias de j ava.
Ciertamente,lamayorpartedelasap
o una variable semforo, son objetos
bajos como el proyecto Pjama [33] que pretenden alcanzar una ortogonalidad
completa. El estndar ODMG 3.0, tampoco especifica una persistencia completamente
ortogonal,co
alesalosquesehatenidoaccesoyalgunapropuestacomoUFO[24],vemosqueen
Java es necesario heredar o implementar determinados interfaces y patrones de cdigo.
UnodelosproductosdeVersant,Enjin,consigue
unprocesadordecdigoejecutablequeaadela
L
r
r
iralgunalimitacin,eslafrmu
e respecto de los lenguajes de
s de persistencia. Que pretendamos conseguir persistencia ortogonal, no debe
significar adoptar una postura estricta y purista, sino de compromiso de diseo; ninguna
basededatos
resumidascuentas,unserviciodepersistenciadebeserlosuficientementeortogonalcomo
paraconseguir:
1. Nonecesitarmodificarelcdigofuente.
2. Independenciadeuso.
37
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
esprimariasparalaidentificacinylocalizacindeobjetos
acerperdurarsusdatos.Vemosloconotro
o.
usodela
iante aplicaciones como las de banca
ico.
Figura4CasodeusoActualizacinSaldo
debe ser compartida, esta es una obligacin de todo servidor de
tosquetienesureflejoenlosserviciosdepersistenciaqueusandelosserviciosde
datos.[8][2].
sumanunsaldo,perolacuenta
muestra
if ( ( sl d >= sal do) | | ( - sl d > l i mi t eCr edi t o) ) {
3. Transparenciadedatos.
4. Utilizarclav
Estos aspectos conducen a nuevos requisitos, que sern tratados en apartados
posteriores,peroantescontinuemosanalizandonecesidadesmsbsicas.
Concurrencia.Compartirlosdatos
La tcnica serializacin no es suficiente para la mayora de las aplicaciones que
necesitancompartirinformacinademsdeh
escenari
LasituacinestpicaenelmundoinformticodelaBanca,eselcasode
actualizacin del saldo de una cuenta bancaria, med
electrnicaporlaRedyelcomercioelectrn
La informacin
baseda
Un objeto persistente tiene dos aspectos: uno en ejecucin y otro su estado
almacenado. Como consecuencia de esta dualidad, la gestin del acceso concurrente a
objetos debe cubrir ambos aspectos, el objeto como entidad en ejecucin y su estado
almacenado en los servicios de datos. De otro modo llegaremos a situaciones
inconsistentes.Porejemplo,losmovimientosdeunacuenta
otrodistinto.
Javaaportamecanismosparalasincronizacinadistintosniveles:declase,objeto,
mtodo y bloque de sentencias, con clusulas y primitivas que controlan el acceso
concurrente. En otros lenguajes es necesaria la implementacin de las tcnicas de
sincronizacin. El siguiente listado la clusula synchronized indica que el mtodo no ser
ejecutado al mismo tiempo por dos procesos, el acceso al mtodo queda bloqueado
mientrassuejecucinnohasidocompletada.
/ **
* Decr ement a el sal do de cuent a anot ando l os det al l es de l a
oper aci n
* @par amcant i dad i mpor t e del car go > 0
* @par ammot i vo de car go
* @par amf echaVal or del car go
* @r et ur n t r ue si f ue r eal i zado el car go, f al se en ot r o caso
*/
public boolean car go( double cant i dad, St r i ng mot i vo, Dat e f echaVal or )
{
synchr oni zed ( t hi s) {
double sl d = sal do;
sl d - = cant i dad;
Actualizar Saldo
Aplicacion
38
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
deshace
instruccionesSQLdelamayoradesistemasgestores,eliniciodeunatransaccincomienza
r et ur n f al se;
}
ano
sal do = sl d;
debe += cant i dad;
r et ur n t r ue;
}
}
Si volvemos sobre el Listado 6, vemos que el estado grabado en el archivo podra
ser modificado desde otro proceso ejecutado desde otra mquina provocando la
inconsistenciaentreelobjetoysuestadoguardado.Unserviciodepersistenciadeobjetosdebe
resolver el acceso concurrente a los objetos persistentes teniendo en cuenta tambin el acceso
concurrenteasuestadoalmacenadodeformaconsistente.
Cadaprocesopuedeaccederalsistemagestordedatos,depositode
para recuperar un mismo estado. Pero qu sucede cuando un objeto es
modificado y su estado es accedido entre tanto por otro proceso? Es necesario emplear
alguna estrategia de bloqueo que garantice la consistencia. Los sistemas gestores de datos
proporcionan la capacidad de compartir y concurrir a los estados guardados. Las
aplicaciones utilizan las interfaces de programacin de los servicios de datos para la
concurrencia, basadas en las estrategias habituales de control de acceso pesimista y
optimista, en el primero los datos son bloqueados para su modificacin hasta finalizar el
proceso que solicita la modificacin, y el control optimista, no se produce el bloqueo ante
nuevasmodificaciones,peropuedeseranalizadalaconsistenciaporlapresenciademarcas
detiempoq
pueden ser efectuados de forma automtica o explicita, esto es, el acceso a los
datos desencadena las acciones de control de concurrencia o bien, la invocacin de
primitivas de bloqueo. La principal diferencia entre una estrategia y otra es la mayor
capacidaddeprocesamientodelcontroldeconcurrenciaoptimista.Pocosgestoresdedatos
ofrecenambasestrategias,inclusoloshayquenoofrec
debeaprovecharlasestrategiasdecontroldeconcurrenciaofrecidaspor
que interacta, y en ausencia de estas, implantar el bloqueo pesimista
a.
Elproblemadelaconcurrenciaesporssolountemamuyampliofueradelalcance
de este texto. En [17] se presenta de forma escueta y sencilla una introduccin a la
problemticadelaconcurrenciaconbasesdedatos.
Transacciones
Elsoportedetransaccionesesunrequisitoesencial.Almenosdebensersoportadaslas
funcionalidades de consolidar y cancelar las modificaciones. Que estrategia de
transaccionesseautilizadaautomticaoexplicita,laeleccindelosdistintasrealizaciones:
bloqueos, anidamiento,..., son caractersticas, que responden a criterios de diseo y
necesidad. Habr sistemas que soporten o necesiten de anidamiento de transacciones,
transacciones de larga duracin, bloq
acindependerdelsoportedadoporsistemagestordedatosfinal.
Conlaserializacinnohaytransacciones,lasmodificacionessonconsolidasenlos
estados almacenados, volviendo a ejecutar la operacin de escribir el objeto. Trabajando
con ODMG 3.0, estn disponibles las operaciones de transaccin de iniciar, consolidar y
r las modificaciones efectuadas. Trabajando con sistemas de bases de datos SQL,
las operaciones de consolidar y deshacer transacciones forman parte del repertorio de
39
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Figura5CasodeusoCierreTPV
40
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
ujos de caja,...; los registros sobre las operaciones manuales efectuadas por
operado
s fuentes, tendr que acceder a cada uno de los servicios de
datos,d
estasituacin,comocomnalamayorpartedelossistemasdeinformacin
de las numerosos ejemplos donde es necesaria la
comunic los requisitos estructurales, expuestos ms atrs,
esencialquepoderestablecer
de los mecanismos de persistencia soportados por el
stenciaesunmediadorentredossistemasomundos,eldelos
dos,proteger
y el acceso no correctos [19] [8]. Esta responsabilidad es
s,queesunrequisitoprevioparalograrlatransparencia
tegridaddelosobjetos,susdatos,susreferenciasaotrosobjetos,
las transacciones. Cabra pensar que la integridad queda garantizada, por
cada extremo de la comunicacin transacciones; de unlado,
en los
ando son bases de datos; y cubriendo ambos lados, las
tran cc
que sig
sistema niporungestordedatos,sinoquedebensercubiertosconlacolaboracin
del rv
evoluci
corresp gestindedatos
afectan a la integridad, cuestin que debe ser contemplada en el diseo de un servicio de
persistencia.
Podemosimaginarquelosdatoslocalesatransferirseencuentranenarchivosoen
unabasededatoslocalenelTPV,desdeah,losdatoscontablesmigranaunERPbasado
en SAP/R3 o CICS con su propia interfaz de datos: datos sobre los pagos con tarjetas
pendientes de compensar con las entidades financieras, cifras de ventas detallada por
artculo, fl
r: tiempos de apertura del cajn monedero, tasas errores de lectores pticos,
movimientosdelacintatransportadora,periodosdeinactividad,incidencias,...vanaparar
unabasededatosmultidimensionaldecontroldeproduccin;yporltimo,lassalidasde
artculossonconsolidadascontralosinventariosdelosalmacenes,quepodranestarsobre
unabasededatosrelacional.
Distribucinsobredistintosmecanismos.ConexionesMltiples
Utilizardatosdefuentesdistintas,ensuemplazamiento,tipoeinclusofabricante,
significa efectuar conexiones a cada uno de los servicios de datos implicados. Cada
conexindefineuncontextoocanalsobreelqueoperarenlosdatos.Unobjetoquemaneja
datos integrados desde varia
ondepersistenlosdatosseparados,conlosmecanismosdepersistenciapropiosde
cada servicio, esto es, emplear canales adecuados para cada servicio. Posiblemente, el
acceso deba ser simultneo, como en el anterior caso de uso del cierre diario de TPV, que
necesitadeunaconexinalsoportelocalyotraconeldestinodelosdatos.En[14]recoge
expresamente
empresas. Evidentemente, existen
ci ultnea. Tambin a n sim
icanlanecesidaddeconexionesmltiplesysimultaneas.Es justif
mltiples conexiones simultaneas a cada uno
iodepersistencia. servic
Integridad
Unserviciodepersi
gestores de datos y el de los objetos en ejecucin. En su papel mediador debe permitir
atosentrelosobjetosylosserviciosdedatos.Compartirytransferir compartirytransferird
datosimplicalaresponsabilidaddeasegurarlaexactituddelosdatosmaneja
los datos contra modificaciones
preservarlaintegridaddelosdato
s. dedato
Esneces
tegridad de
arioasegurarlain
y la in
parala persistencia junto con
objetos, el lenguaje de programacin con su sistema de tipos y gestin de
excepciones,ydelotro,losgestoresoserviciosdedatosquesustentanlaintegridaddatosy
la integridad referencial cu
sa ionesintegrandolasoperacionesdecadaladocomounasolayatmica.Elcdigo
ue revela varios aspectos de la integridad que no pueden ser cubiertos ni por un
detipos,
se iciodepersistencia.
La agregacin, composicin, la herencia, el polimorfismo y la ligadura tarda, la
n de los esquemas de clases y bases de datos, y la dificultad de la falta de
ondenciaentrelossistemastiposdeloslenguajesylossistemasde
41
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
publi
{
codi gocuent a = unCodi gocuent a;
}
nt e r ecuper aMet odoSer i al i ze( St r i ng i dCl i )
catch ( Except i on
Listado8Aspectosdelaintegridad
saresolverconlaintervencin
persistente, el estado
ctualizado para reflejar el
cer la
entre el estado de un objeto persistente y su representacin en el
e,salvoqueambosutilicenelmismosistemadetipos,parapoder
ademsdelagrabarlosnuevosobjetos.
nciadetipos,larecuperacindelestadodeobjetoexigeque
peradoseanconsistentesconeltipo
estionesparadescubrirnuevosrequerimientos.
in
this
Veamoselsiguientecdigo:
c void set Codi gocuent a( St r i ng unCodi gocuent a)
private Cl i e
throws Except i on
{
try {
Obj ect I nput St r eament r ada = new Obj ect I nput St r eam( new Fi l eI nput St r eam(
i dCl i ) ) ;
Cl i ent e cl i Recuper ado = ( Cl i ent e) ent r ada. r eadObj ect ( ) ;
ent r ada. cl ose( ) ;
return cl i Recuper ado;
}
e) {
La asignacin debe
BD si el cambiar la
objetoesp
.
}
Ellistadoanteriorpresentatrescuestionesesenciale
delserviciodepersistencia:
Sincronizacin, al modificar el estado de un objeto
rsistencia, debera ser a depositado en el medio de pe
cambio.
Correspondencia entre los modelos de clasesdatos, es necesario, cono
correspondencia
t mediopersisten
efectuarlasincronizacin
Consistenciaocongrue
lostiposdedatosdelestadoalmacenadoyrecu
declaradodelobjetopersistente.
Estudiemosestascu
Sincronizac
En el ejemplo del Banco es necesario actualizar los datos almacenados, la
asignacin del atributo codigocuenta o del saldo, implica que su estado persistente
debera ser sincronizado con su estado en ejecucin. Las transacciones, las operaciones
bsicas y las conexiones proporcionan la funcionalidad bsica. El cdigo ms atrs del
mtodo setCodigocuenta, con persistencia completamente transparente, provocara la
actualizacindelestadopersistentedeformaacordealcontroltransaccionalutilizado.Enel
siguientepresentaelextremoopuestodondeelprogramadorasumelaresponsabilidad.
Listado9asignacinpersistenteJDBCdelCdigodeCuenta
private boool ean J DBCset Codi goCuent a( St r i ng unCodi gocuent a)
throws Except i on
{
try {
St r i ng ant CodC = this. codi gocuent a;
. codi gocuent a = unCodi gocuent a;
pst mt = con. pr epar edSt at ement (
" UPDATE Cuent as SET codi gocuent a = ? " +
" WHERE pkcuent a =?" ) ;
pst mt . set St r i ng( 1, this. codi gocuent a) ;
ersistente
CorrespondenciaBDytipos
programa.
Correspondencia
objetoregistro
}
s
sobrelaquesonefectuadaslasoperacionesdebasesdedatos,un
empleo
lizado el estado persistente de los objetos, es tan
importa
nizacin o
estadopersistentedelosobjetos,requieresaberenejecucin
cuales
integridad, ofrecer los
mec s
signif trol de concurrencia
(bloqueo por ejemplo un
obje
agregad minado el objeto compuesto deben ser eliminados los agregados; las
relacion
utores como B.
pst mt . set St r i ng( 2, this. pkcuent a) ;
pst mt . execut eUpdat e( ) ; / / t r ansacci on i ni ci ada con ej ecuci n SQL
pst m. cl ose( ) ;
con. commi t ( ) ;
r et ur n t r ue;
}
catch ( Except i on e) {
Syst em. er r . pr i nt l n
( " Excepci on. Rest aur ar val or es " ) ;
Syst em. er r . pr i nt l n( e) ;
this. codi gocuent a = ant CodC;
con. r ol l back( ) ;
r et ur n f al se;
Enestecdigoanterior,elprogramadorsepreocupadesalvaguardarlosdatosen
variables,paraelcasodequeseproduzcaunerror,queobligueadeshacerlamodificacin,
cancelandolatransaccinparaqueloscambiosenlabasededatosnosurtanefecto;sitodo
vabien,unavezcopiadoelnuevovalordesdeelatributocodi gocuent aalcontextodela
sentencia SQL preparada, los cambios son consolidados en la base de datos mediante la
invocacindelaoperacindeconsolidarcommi t ,mediantelaconexinalabasededatos.
Elprogramadordebeconocer,cualeslatabladondepersistelacuenta,lacorrespondencia
objetoregistro; se presupone una variable de clase, o instancia, que repre enta una
conexinabierta(con)
de transacciones pesimista implcito, el orden de las sentencias es crucial,...Pero
queocurrasielatributocodi gocuent afuerapblicoyunmtodoasignarsuvalorsin
mediar operacin contra la base de datos? Provocara la falta de integridad Cul sera el
valorcorrecto,elasignadoenlaaplicacinoelresidenteenlabasededatos?
La necesidad de mantener actua
nte que encontramos numerosos ejemplos donde las clases del dominio son
utilizadassloparaencapsularelcdigodeaccesoyactualizacinalosdatos.
Al sincronizar, estamos moviendo o copiando el contenido de los objetos a su
representacin persistente. Considerando el objetivo de transparencia de datos. Un servicio de
persistenciadeberaactualizarautomticamentelosestadosalmacenadosdelosobjetospersistentes.
Actualizar los estados de los objetos modificados, ocultando las instrucciones dependientes del
mecanismo de persistencia utilizado, el lenguaje empleado con el mecanismo. La sincro
Deshacer
cambios
actualizacinautomtica,del
lasituacindelobjeto,siesnuevo,osifueguardadoymodificado,peronohasido
aunconsolidadoenbasededatos,...conocerelestadoactualdelciclodevidadelosobjetos
persistentes, informacin que es independiente del objeto, pero sin la cual no es posible
automatizarlatarea.Estoafectatambinalasrelacionesentrelosobjetos.
Un servicio de persistencia de objetos, debe manejar las relaciones entre objetos de
agregacin, asociacin, composicin y herencia de manera que se preserve la
ani mosparaconseguirlaintegridaddelasreferenciasentreobjetosdeformaautomtica.Esto
ica que las operaciones borrado, actualizacin, copia o con
s) deben proceder, segn como estn relacionados los objetos,
to compuesto, al ser bloqueado para modificacin, sern bloqueados sus objetos
os, al ser eli
es entre los objetos deben ser consistentes, no puede ser eliminado un objeto
referenciadoporotro.
Siqueremosalcanzarlamayorortogonalidadposible,esnecesariocrearelcierrede
persistenciadecadaobjetopersistenteautomticamente,dichodeotraforma,unserviciode
persistencia debera ofrecer persistencia por alcance. La opinin y trabajos de a
43
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Meyer,
alcance.
tremo, FastObjects o Versant productos estos
quesop
yelestadorecuperadodesdeelobjetoent r ada?En
el ejem
ndetipossimilaralaspresentesenJavayC++[19].
jecucin.
ofaltadeintegridad.
referencias?Accederymodificarelestadoenbasededatosdeunobjetocontenidocomo
K. Priese, y D. Jordan y M. Atkinson ponen de manifiesto la conveniencia de
implementarlapersistenciaporalcance.
ElestndarODMG3.0exigelatransparenciadedatosylapersistenciaporalcance.
Los estndares SQLJ, JDBC no consideran la transparencia de datos, ni la persistencia por
Encontramos productos OODMBS que no soportan transparencia de datos, y que
requieren la intervencin del programador marcando los objetos, como modificados para
actualizar y debiendo definir el protocolo de transferencia o copia al estado guardado,
como sucede con Objectivity; y en el otro ex
ortantransparenciaypersistenciaporalcancedelestadodirectamente.
Compatibilidaddetipos
MsatrsenelListado8Cmoesgarantizadalacompatibilidaddetiposentreel
objetodelproceso,cl i Recuper ado
plo se presupone que el tipo que ser recuperado es compatible con la conversin
forzada de tipos que aparece. Si algn proceso sustituye el archivo asociado al objeto
ent r adaconuntipoincompatible,adisexactituddelosdatos,noesposiblemantenerla
integridad.Cuandounobjetoesguardadoalrecuperarloesnecesario:
Conocer el tipo de datos del objeto, su clase, y tambin el tipo de dato de cada
objetodelcierredepersistencia,cuandoestosseanextrados.
Los tipos utilizados para reinstanciar alos objetos, debern estar disponibles para
serusados.
La consistencia entre los tipos guardados y actuales de los objetos, y la
disponibilidad de las clases en ejecucin, conlleva no pocos quebraderos de cabeza en
tiempodeejecucin.Tantoscomoparaqueunlenguaje,Eiffel,paradigmadeloslenguajes
orientadosaobjetos,justifiquelainclusindelainstruccindeintentodeasignacin,una
operacindeconversi
Parapreservarlaconsistenciadelostiposentreobjetosydatos,lainformacinsobre
el tipo de cada objeto persistente debera ser persistente tambin junto al estado guardado de cada
objeto,deestaformaesposibleconocerentiempodeejecucineltipoqueserprecisoantes
deusarlo,facilitandoelasegurarlaintegridadenlacorrespondenciaentreclaseydatos.
Las disponibilidad de los tipos esta supeditada a la evolucin del esquema de
clases y al despliegue de las mismas, temas que dependen del proceso de produccin de
programasquedebeincluirlastareasyprocesosnecesariosparagarantizarlapresenciade
lasclasesadecuadasentiempodee
Enningncaso,lassituacionesdeerrorprovocadaspornoestardisponibleuntipo
o por incongruencia deben provocar la finalizacin abrupta de la aplicacin, el
programador debe tener la oportunidad de poder manejar las situaciones de error por
inconsistencia
Las relaciones entre los objetos, de composicin, agregacin y herencia necesitan
mantenerlaintegridaddelasreferencias,lasolucinnoesnica,enunaaproximacinlas
relaciones pueden ser contenidas como parte integrante del estado de un objeto, en otras,
lasrelacionesseconviertenenobjetosindependientesconestadopropio.
Cuando un objeto es contenido dentro de otro (composicin), forma parte del
estado del objeto que lo contiene, y como tal debe ser gestionado por el servicio de
persistencia. El objeto contenido tendr identidad propia en el depsito de los
datos?Podr ser obtenido directamente por una consulta, o habr que navegar por las
44
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
addeaccesoalasinstancias
e persistencia en su papel de mediador debe trasladar hasta los
clientes
privilegios,resulta
as, un
conocer s
mantenimie que los cambios en los permisos de acceso no afectan al cdigo. Las
referenc
deprotecci eprivilegios[13][27].
s bre
lasvista
con todo s da
objetos,sin hayunestndarqueestablezcacualdebe
ser el
polticas de gina de almacenamiento, coleccin o
contenedor,
para ca
funcin de la identidad del usuario y el grupo; Gemstone permite definir polticas de
acceso
considerar
soluciones de credencial y privilegio sobre instancias,
clases,
rability Version 2 son dos marcos de referencia sobre los que
siendo en esta ltima
tas.
uesientanlasbasespara
justificadoporsusventajas,tambin
isitos necesarios para conseguir esta.
para centrar la atencin sobre la
arenciadedatos:
recuperacindelestadoalmacenadodelosobjetos,incluidaslasrelacionesconotros
objetos que pertenecen a distintas clases dentro una jerarqua de herencia. Algunos de los
productosrevisados,nosoportanpolimorfismo,comoporejemploCastor.
Integridaddeacceso
Laintegridadrequiereproteccinademsdeexactitud,asegurarqueelaccesoalos
datos, sea realizado acorde a los privilegios establecidos. Los mecanismos de persistencia
ofrecen distintas capacidades de control de acceso a los datos, para establecer polticas de
privilegiossobrelalecturaymodificacindeestos,enbaseasistemasdecredencialestales
comoloscertificadosdigitales,nombresdeusuarioconcontraseas,kerberosuotros.Los
ejemplos vistos del Banco y el supermercado describen dos entornos que requieren
asegurarlaspolticasdeprivilegiosestablecidas.
Unserviciodepersistenciadeberaasegurarlasegurid
que maneja. El servicio d
, usuarios o procesos, las polticas establecidas con el concurso de los mecanismos
depersistenciausados.
Un punto de vista importante, es conseguir tambin la ortogonalidad entre
persistencia y seguridad, consiguiendo que los programas sean independientes de la
seguridad,queelcdigofuentenoseaalteradoconcomprobacionesde
cdigo ms seguro, porque el programador no tiene capacidad para alterar o
la polticas de privilegios, y adems, la independencia facilita un mejor
nto, por
ias inteligentes o proxys son un posible instrumento para plasmar esta necesidad
ndelacceso,sinproducirunarevelacind
Lo sistemasdebasesdedatosrelacionalesarticulanlosprivilegiosdeaccesoso
s,lassentenciasgrantylasfigurasdeusuario,grupoorolconcontraseas,creando
e to un esquema de autorizacin y privilegios. En las bases de datos basa s en
laposibilidaddevistasdeobjetos,no
mecanismo de autorizacin, cada fabricante aporta su punto vista, ofreciendo
acceso en uno o ms niveles, desde la p
hasta la clase, el objeto y sus atributos. Por ejemplo, Versant permite definir
da clase de una base de datos, cual es el acceso a las instancias contenidas en
para los objetos almacenados juntos en contenedores, denominados cluster, sin
la clase de los objetos; Objectivity brinda una serie de libreras para construir
ad hoc que manejan el concepto
contenedores y bases de datos. En Java, la API Security o el estndar CORBA
Common Secure Interope
construir las polticas de privilegios de un servicio de persistencia,
finirpolticasdeaccesoanivelinstanciasconcre posiblede
Transparenciadedatos
Hastaelmomentohansidoexpuestosdi
tarelobjetivoinicialdetransparenciadedatos
stintosaspectosq
concre
han sido presentados buena parte de los requ
Requisitos expuestos, que son relacionados aqu
aratenertransp transparenciadedatos.Esnecesariop
1. La
objetos.
46
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
scomoPjama0paraJavasobregestordeobjetosy
0,0y[i2
etos,
posponiendolo
o las referencias antes de ser usadas, y al gestionar el bloqueo concurrente se
ninconsistente.
1.2.1.3.
partir de un identificador de objetos, un nombre asociado previamente, o con
una b
ar en ODMG 3.0, OQL
[7].
definici
Estereq
como consultas para expresar que objetos queremos
alca
consulta
ofrecerla
orientac etos, posibilita ofrecer una solucin que evite las diferencias entre los
meca is
nivel
en [7] y
objetos.
datosobjetualesyendiseosreconocido
6]paraobjetossoportadosporbasesrelacionales.
private void most r ar Cuent a( ) {
Movi mi ent o [ ] m;
Deci mal For mat d = new Deci mal For mat ( ) ;
St r i ng sl d ;
l bl CodCuent a. set Text ( mi cuent a. get Codi gocuent a( ) ) ;
l abel Cr edi t o. set Text ( d. f or mat ( mi cuent a. get Li mi t eCr edi t o( ) ) ) ;
sl d = d. f or mat ( mi cuent a. get Sal do( ) ) ;
l bl Sal do. set Text ( sl d) ;
m= mi cuent a. get Apunt es( ) ;
for( int i = l i st MovsCuent a. get I t emCount ( ) ; i < m. l engt h ; i ++) {
l i st MovsCuent a. add( ( ( Movi mi ent o) m[ i ] ) . t oSt r i ng( ) + " Sal do: " +
sl d, i ) ;
}
}/ / most r ar Cuent a
Listado11Mtodocontransparenciadedatos
Un servicio de persistencia debera emplear referencias inteligentes para mejorar el
rendimiento, reduciendo el coste del esfuerzo de recuperacin de los obj
hastaelinstanteantesdesernecesariosuusoyparafacilitarelcontroldela
integridad referencial y acceso concurrente, sin intervencin del programador. La
operacinderecuperacindeobjetos,ademsdelaccesoalosmecanismosdepersistencia,
requiere de la asignacin de memoria y su inicializacin, la creacin de una instancia, su
inicializacin, la asignacin de los valores recuperados, etc., esto llega a ser un problema
cuando trabajamos con objetos verdaderamente grandes como colecciones persistentes
enormes, y por otra parte, la necesidad de asegurar la integridad puede ser acometida
validand
evitansituacionesdebloqueoyactualizaci
Consultasexprofeso
La transparencia de datos permite navegar desde una instancia persistente por la
telaraa de referencias de su cierre de persistencia, pero al menos una referencia, la del
objetorazdeesecierredebeserobtenidaexpresamente.Estaprimerareferenciapuedeser
obtenida a
squeda condicional sobre las instancias persistentes, mediante consultas ad hoc.
Consultasynavegacinentreobjetossecomplementan,lasconsultaspermitenlocalizarlos
objetosdesdelosquenavegarhastaaaquellosquedeseamanipular.
Los sistemas gestores relacionales proporcionan SQL para realizar consultas ad
hoc, en el lado de los gestores objetuales tambin tienen su estnd
Los productos consultados ofrecen interfaces de programacin que permiten la
nyejecucindeconsultasadhocObjectivity,Versant,FastObjectyApacheOJB.
uisitoestapresenteenelmanifiestosobrebasesdedatosdeobjetos,queestablece
ltimo requisito, la facilidad de
nzar, con un alto nivel de abstraccin, eficiencia e independencia. Una facilidad de
sadhocayudaasimplificarlaprogramacinyamejorarlaextensibilidad[2].
Siunserviciodepersistenciapretendeserelpuntodeaccesoalosserviciosdedatos,deber
posibilidaddeefectuarconsultasadhocatravssuya.Unavezms,laaplicacindela
in a obj
n mos soportados bajo una misma interfaz, en esta ocasin, de consultas con alto
deabstraccin,eficienciaeindependenciadelosmecanismos.Eltemaesmuyamplio,
[4] podemos hallar una breve introduccin a la problemtica de las consultas con
49
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Funcio
eficienci deformaefectiva
ustracin de un escenario sobre el ejemplo del banco es el
pretexto
c t
los datos precisos para llevar a cabo el
arente para el programador? Hay ciertas
s aplicaciones esperan acceder a objetos
dosporelserviciodepersistencia,queobtienelosdatosdesdelosmecanismos
de pers
a total en el acceso a los objetos [41] [32]. Con caches y el
agrupam
nalidadesrelativasalrendimiento
Son necesarias otras funcionalidades para lograr la persistencia con la eficacia y
aadecuadas,lasoperacionesdepersistenciadebenserejecutadas
y econmica en recursos. La il
para presentar nuevos requisitos relativos al rendimiento, el escenario de la
Figura4.
Lasaplicacionesaccedenalascuentasdelbancoparallevaracabocargosyabonos,
esto puede implicar extraer cada objeto uen a al que se aplica la operacin de cargo o
abono; cada una de estas operaciones, aade una nueva instancia movi mi ent o a la
coleccindenumerososmovimientosqueunacuentatiene,ensuma,unasituacindonde
sepodranplantearalgunaspreguntasrelativasalrendimiento:
Procesarunobjetocadavezovariossimultneamente?Accederobjetoporobjeto
en secuencia, es ms lento que agrupar las operaciones, de forma que se solapen
aquellas actividades que pueden ser simultneas, o que agrupadas reducen la
latenciaenelaccesoalosdatos.
Extraertodoslosmovimientosdecadaobjetocuentaosolounareferenciaalque
esnecesario?Conciertasoperacionesnoesprecisoconseguirelobjetoalcompleto,
simplementedisponerdeunaalgunarepresentacinsuficiente,paraeltratamiento
a efectuar, extraer y manejar exactamente,
proceso.
Porqunomodificarelestadodelosobjetosdirectamenteenlabasededatossin
reconstruir los objetos, de forma transp
ocasiones, donde cada elemento de una coleccin es actualizado, sin provocar
efectos laterales en otros objetos; con la indicacin expresa del programador, la
magiadelapersistenciapodraresolver,aplicardirectamentelastransformaciones
enlosestadosalmacenadosenlugarsobrecadaobjetoafectado.
Gestinautomticadecach
La utilizacin de tcnicas de lectura anticipada y escrituras diferidas, sistemas de
cach, permite mejorar el rendimiento del flujo de almacenamiento y recuperacin de
objetos desde los gestores de datos. El empleo inteligente de caches reduce los costes de
acceso los servicios de datos [41]. La
proporciona
istencia para ser convertidos en objetos y viceversa, el servicio recibe objetos que
deben ser convertidos, en datos apropiados a los mecanismos de persistencia. Todo ello,
requiere un espacio de memoria y un tiempo de cmputo, que afecta al tiempo de
respuesta de las operaciones de las aplicaciones, mientras que los usuarios esperan
respuestas inmediatas. El rendimiento del acceso y actualizacin de objetos puede
aumentar,silasoperacionesparamaterializarydesmaterializarinstanciassonsustentadas
con una gestin de caches adecuada, que pueden facilitar la agrupacin de mltiples
operacionesy objetos por acceso, parareduciras nmero de peticiones a losmecanismos
de persistencia y la latenci
iento de operaciones por acceso, son dos de los mecanismos para acometer,
aumentosimportantes,escaladas,enlacarga[6].
Unserviciodepersistenciadeberaimplantarunagestindecachdeobjetosparamejorar
elrendimientodeaccesoalosobjetospersistentes.Deberaserposibleextraeryalmacenargruposde
variosobjetosencadaaccesoalosserviciosdedatos.
50
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
o Oracle,
este particular, con el anuncio de
e el rendimiento escalable. El tema es
comple
uno, para incluir un nuevo movimiento en la coleccin
almacen
puesayudanalrecorridodecoleccionesmanejandolos
s. Un
s o
ciones de los objetos que representan, son
llamado b ntantes(proxies).Lasreferenciasinteligentes,lositeradoresylos
cachesc p tafuncionalidad,necesariaparaacometerlarecuperacinselectiva
delestadod syamencionados,S.W.Ambler,W.Kellerhan
incluido resentantes en sus propuestas de servicios de
persistencia soportar objetos representantes para mejorar el
rendimientodelaccesotransparente.
Eltemanoestrivial.Lamayoradelosmecanismosdepersistenciaempleanalgn
tipodecachomemoriaintermediaparagestionarelaccesoyactualizacindelosdatos.A
la dificultad propia de la gestin de cach, se aade la problemtica de la integracin,
coherencia y validacin de caches diferentes, los de cada mecanismo de persistencia y los
de un servicio de persistencia. En los ltimos aos, varios fabricantes com
Gemstone y Poet, viene haciendo especial nfasis sobre
nuevos avances patentados de gran incidencia sobr
joyestfueradelmbitodeestaslneas.Unasreferenciasquepuedenservircomo
primeraaproximacin,son[6][19][41][32].
Iteradores
A lo largo del texto han sido mencionados distintos ejemplos, en los que era
necesarioprocesarlosobjetosdeunacoleccin,unasecuenciadeobjetos.Laiteracinsobre
los elementos de una coleccin debe ser realizada con eficacia y eficiencia, esto es una
necesidad asumida en parte por los mecanismos de persistencia, que suelen ofrecer los
medios para iterar de un modo controlado sobre secuencias de elementos. Las bases de
datos relacionales ofrecen la facilidad de iterar sobre las filas resultantes de una consulta,
mediante los cursores, los OODBMS tambin ofrecen objetos iteradores sobre colecciones
deobjetospersistentes.
EnlaFigura1lasrelacionesson[0..n],estasrelacionessernplasmadasmediante
colecciones de objetos arbitrariamente grandes; en la situacin anterior de aadir un
movimiento a la Cuent a, el empleo de un iterador podra evitar extraer todos los
movimientos de la cuenta afectada, por ejemplo calculando la referencia adecuada sin
necesidad de recuperar objeto alg
adacorrespondiente.LostrabajosdeW.Keller[42]M.Atkison[33]yS.W.Ambler
[32],porcitarsolotres,incluyenexpresamentelaconvenienciadelsoportedecursorespara
elaccesoalosdatos.Asumiendoqueloscursoresson,endefinitiva,unaformadeiterador,
lanecesidaddesusoporteesclara,
recursos necesarios, para crear la ilusin de navegacin por los objetos contenido
serviciodepersistenciadeberaofreceriteradoressobrecoleccionesdeobjetospersistentes.
ProyeccionesuObjetosRepresentantes(proxies)
Las cuestiones al principio de este apartado y lo escrito en prrafos anteriores,
permiten cuestionar si realmente es necesario extraer un objeto al completo, para operar
con l, no bastara con extraer aquello que va a ser afectado? Imaginemos un estudio de
ingeniera de obras pblicas faranicas, donde su sistema de informacin maneja objetos
talescomounobjetoproyecto,agregadodemuchosmsobjetosymuygrandes,comop.Ej.
planos,imaginemo queunobjetoproyectoesaccedid paramodificarlaasignacindeun
captulo de su presupuesto. Alguien puede creer que sera eficiente extraer todo el objeto
paramodificarlospocoscaracteresqueocupanunimporte?Lasolucinesutilizarobjetos
especiales que actan en representacin de los objetos a tratar, distintos a los originales,
ideados para contener justo lo necesario para posibilitar la ilusin de interaccin con los
objetos persistentes, estos objetos son proyec
so jetosreprese
om lementanes
elosobjetos.Variosdelosautore
la funcionalidad de objetos rep
. Un servicio de persistencia debera
51
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
3]sedescribeelpatrnProxy(representante)queesfundamentobsicopara
compre
e persistencia y sin trastocar demasiado la ortogonalidad. Son
conside
in de expresiones calculadas en la definicin de los ndices, decidir entre usar la
estndar para la consultas con proyecciones, sobre
corresp
QLcon
lapretensin se
sgestoresrelacionales,ofrecenmodosparalaextraccinyactualizacinde
datos especialmente concebidos para mejorar el rendimiento. Consultas paraleladas y de
En[1
nder y acometer la realizacin de esta funcionalidad. En [19] tambin ilustra la
conveniencia de objetos y clases de utilidad para la aplicacin que actan como
representantesdeformaexpresa.
Aprovecharlascaractersticasavanzadasderendimientodelosserviciosdedatos
La ltima cuestin planteada al comienzo del apartado, considera que ciertas
operaciones de actualizacin podran ser ms rpidas de efectuar directamente sobre los
datos sin necesidad de recuperar objetos, siempre que sea posible asegurar que otros
objetos en ejecucin no se ven afectados por estos cambios. Esta forma de actuar requiere
de aprovechar las capacidades particulares de los servicios de persistencia, lo que puede
parecer un contrasentido respecto del objetivo de ortogonalidad enunciado ms atrs,
plantear la utilizacin del lenguaje del mecanismo de persistencia particular; pero,
precisamente las tcnicas orientadas a objetos, posibilitan sacar partido de las
caractersticas avanzadas de los mecanismos de persistencia, sin revelar los detalles a los
clientes del servicio d
rados tres aspectos principalesa las bases de datos relacionales cuya aportacin al
aumento de rendimiento no deberan ser ignorados por una mal entendida pureza de la
orientacinaobjetosdelasoluciones[41][32]:
SQLnativo
Modosdeoperacinavanzados
Procedimientosalmacenados
SQLnativo
El lenguaje de consulta de bases de datos estructurado, SQL, que ofrecen gestores
relacionales, presenta variaciones que afectan tambin a como son efectuadas las
sentencias. A ttulo de ejemplo, Oracle aade la clusula connect by, a la sentencia
sel ect parapresentarresultadossegnunordenjerrquico;ensusversiones7,elorden
de inclusin en la clusula f r omde las relaciones, afectaba expresamente al rendimiento,
con la eleccin de la relacin directriz del acceso a los datos. SQLBase 5.x permita la
utilizac
semntica de Oracle, o la
ondenciasdeclavesajenascompuestaconnulos(outerjoins).As,unlargoetctera
con SqlServer, Potgress, RDB, DB2, Sysbase... SQL, aunque es un lenguaje declarativo,
requiere de un conocimiento profundo del esquema manipulado y de las operaciones a
realizar, ya que una misma operacin expresada con sentencias distintas, e idntico
resultado, podran tener un coste de cmputo y tiempo muy dispares incluso en varios
rdenesdemagnitud.
Las directivas, instrucciones dirigidas al intrprete o compilador de SQL, son otra
de las capacidades para mejorar el rendimiento propias del SQL de cada producto. Estas
permiten alterar el plan de ejecucin que elabora el compilador, por ejemplo, alterar el
nmerodehebrasalparalelarunaconsulta,elndicequeguelaseleccin,...Deunaforma
uotra,estasextensionespermitenmodificarelplandeejecucindelassentenciasS
demejorarelrendimientoylaproductividad. Hayproductosentre losque
hatenidoaccesoqueexpresamentepermitenSQLnativocomoHibernate.
Modosdeoperacin
Alguno
52
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
solo lect
s,ocomointerfacesdeprogramacinespeciales,ejemplosdeambas
ncia al t er sessi on y la interfaz de SQLBase de Centura
ado en la base de
datosmism olibrerasdeprocedimientosyfunciones,
y como acceso a datos (disparadores). El cdigo
almacen jas y empotrar operaciones del
negocio, ntepodranserexpresadascomosimples
sentenciasSQL,porsufaltadecompletitudcomputacional.Enmuchasocasiones,elcdigo
almacen o de
objetos entre clientes y servidores, como
servicios de se de objetos, por ejemplo Gemstone/S, que
present lkyJavajuntoalservidordeobjetos.
a conveniente poder disponer de las capacidades para mejorar el
rendimie , os. Idealmente deberan ser
ntosdeserviciosopropiedadesrelativasa
relaciona
tencia:
cambiodelesquema.
s e
coninstanciaspersistentesguardadas,esmodificada
tersticas?Cmoasimilarloscambiosenelesquemadelosserviciosdedatos?
ura, actualizaciones sin posibilidad de recuperacin, y procesamiento asncrono y
diferido de las operaciones. Estas capacidades son presentadas, a veces, como nuevas
sentenciasSQLnativa
opciones, Oracle con su sente
Corp.
Procedimientosalmacenados
Los principales sistemas gestores de bases de datos relacionales actuales permiten
la ejecucin de cdigo en el lado del propio servidor, este es almacen
a,queloofreceenformadepaquetes
cdigo asociado a ciertas operaciones de
ado, permite definir reglas de integridad comple
enlapropiabasededatos,quedifcilme
ad constituye la nica solucin efectiva. Tambin los sistemas de las bases
brindan esta posibilidad de partir el cdigo
aplicaciones integrados en la ba
asendosentornosdeejecucinSmallta
En definitiva, ser
nto ofrecidas por los mecanismos de persistencia utilizad
presentadasporelserviciodepersistenciaamododeconju
losmecanismos.
Un servicio de persistencia con soporte relacional debera permitir la utilizacin de cdigo
SQL nativo, modos de operacin nativos y procedimientos almacenados de los servicios de datos
lessoportados.
Funcionalidadesavanzadas
Una vez cubiertos los aspectos bsicos de la problemtica de la persistencia,
veamosotrosaspectosquepodransertenidosencuentaporlosserviciosdepersistencia,
porquelapuestaenprcticadeunserviciodepersistenciadesvelanuevasreasdeinters
queseesperaseanresueltasconlaayudadelserviciodepersis
Lagestindel
Serviciodepersistenciacomofuentededatos.
Mltipletransaccionescoordinadas.
Procesamientode ucesosyeventosrelativosaerrores,transpar ncia.
Medidasdeproductividadyrendimiento.
Laeficienciadealmacenamiento.
Trazabilidad.
Neutralidadrespectoallenguajedeprogramacin.
Gestindelcambiodelesquemadepersistencia
Quocurrecuandounaclase
ensuscarac
Estaspreguntasdestacanlaproblemticadelcambioenelesquemadepersistencia.
Acometer la gestin de los cambios en el esquema necesita disponer de la capacidad de
manejar meta informacin, datos sobre los esquemas de las clases y de los datos; meta
53
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
micos,cambiancon
eltiemp
adaptacin, ante cambios en los
modelo e cambios en el modelo de
objetos os lenguajes de
program cin
Version
situaciones donde los objetos, instancias
individ
pone un esfuerzo de programacin que puede ser
n modelo general de correspondencia como [6] o
[24]. Es
os con SQL. Un servicio de
persisten
icio de persistencia podra ofrecer datos en forma de registros, adecuados
de usuario final que existen o para la
matos (html, csv o XML). S.W. Ambler propone
expresa
informacin que es utilizada en automatizar la gestin de las modificaciones, en ambos
lados de la correspondencia clasedatos. El tema es muy amplio para ser descrito en este
trabajo.Unadescripcindelataxonomadelcambioseencuentraen[4].Veamossolotres
cuestionesrelativasalaevolucineintegracindeesquemas.
Evolucindelesquema
Ennumerosasocasioneslosesquemasdepersistenciasondin
o,perolaevolucindelesquemadeclasesydepersistencia,nosiemprepuedenser
simultaneas, pensemos en una base de datos con una coleccin de instancias que ocupa
varios terabytes de datos, plantear un cambio instantneo en la estructura de
almacenamiento de tantos datos no es factible, tendra ms sentido evolucionar, segnun
modelo de actualizacin bajo demanda. Esto implica la necesidad de poder manejar el
esquema de persistencia en ejecucin. Lo que conduce a que una facilidad opcional para un
serviciodepersistencia,seralaadministracindelesquemadepersistenciaentiempodeejecucin.
Esto permitira cierta flexibilidad y capacidad de
s d datos y del esquema de persistencia, e incluso, ante
en tiempo de ejecucin, posibilidad que esta disponible en ciert
a comoSmalltalkyJava.
es
La necesidad de evolucin comprende
uales, pueden cambiar no solo en el contenido de sus atributos, sino en sus
caractersticas, en su funcionamiento, manteniendo constante su identidad; estos cambios
creandistintasvariantesdeunmismoobjeto,versiones,querepresentanlaevolucindeun
objeto. Pensemos por ejemplo en un seguimiento de cambios o trazas de documentos o
programas,dondeesnecesariomantenercadaversin,querepresentaunmismoobjetoen
instantesdiferentes[4].
Automatizacindelacorrespondenciaygeneracindeesquemas.
La falta de correspondencia su
evitada mediante la aceptacin de alg
to permitira la automatizacin del proceso de correspondencia manejando meta
informacinsobreobjetosylostiposdelosmecanismosdepersistencia.Laautomatizacin
debera ser efectiva en losdos sentidos, desde los objetos a los datos y al contrario, desde
losdatosalosobjetos.Enparticular,lasbasesdedatosrelacionalesposibilitanestaforma
de actuar, porque facilitan la operacin sobre sus catlog
ciapodrafacilitarconlametainformacinadecuada:
Lageneracindeesquemasdedatosapartirdelasclases.
Lageneracinautomticadeclasesapartirdelosesquemasdedatos.
Lagestindelcambioacadaladodelacorrespondenciaclasedatos.
Serviciodepersistenciacomofuentededatos
Un serv
para muchas de las herramientas de consulta
generacin de archivos en diferentes for
mente esta opcin [32]. Los servicios de persistencia podran presentar los datos que
obtienenenformaderegistros.Conellosepotenciaelpapeldemediadordedatosdelosserviciosde
persistenciaampliandosusposibilidadescomopasarelatransparente.Losserviciosdepersistenciaa
54
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Mltip
poder ser tratados adecuadamente.
Errores valores
desuprocesamiento.Lasdiferenciasentrelosdistintosmecanismospueden
ser alla
ciones. Las excepciones recogern las situaciones de error,
anormales no progra
suvezseconviertenasenfuentesdedatosparaotrosservicios,comolasherramientasdegeneracin
yejecucinconsultaseinformes.
letransaccionescoordinadas.
Elplanteamientoestablecidoenseccionesanteriores,consideraquelosserviciosde
persistencia deben integrar distintos mecanismos de persistencia; trabajar con varios
mecanismos de persistencia de forma simultnea, esto necesita de coordinar las
transacciones entre los diferentes mecanismos, cuando los objetos persistentes implicados
enunamismaoperacinresidensobremecanismosdispares.
El modelo de transacciones de un servicio de persistencia podra asumir la
integracinycoordinacindelosmodelosdetransaccionesaportadosporlosmecanismos
de persistencia que soporta, evitando delegar esta actividad en el programador. As
tambin,lastransaccionesdesplegadasporlosserviciosdepersistenciadeberanpoderser
coordinadasaunnivelsuperior,integrandolastransaccionesenservidoresdeaplicaciones
y monitores transaccionales, permitiendo de esta forma la integracin de los servicios de
persistenciaconotrostiposdeservicios,presentadosenestosservidoresdeaplicacionesy
transacciones.
Procesamientodeeventosenejecucin
Durante la ejecucin de los objetos persistentes surgen seales desde el entorno y
desde las distintas piezas que sustentan el servicio de persistencia, seales que pueden
cambiarelflujohabitualdelaejecucin.Estassealescorrespondenasituacionesdeerror
debidas a acontecimientos inesperados o fallos, y a sucesos o eventos consecuencia de la
actividaddepersistencia.Enamboscasos,loseventospuedenrequerirlaintervencindel
programadorconlaincorporacindecdigoadecuado.
Los errores que surgen en la operacin con los mecanismos de persistencia,
deberan ser transmitidos hasta los programas para
como la duplicidad en claves nicas, la asignacin de nulos o la violacin
de reglas de integridad complejas ejecutadas por los servicios de datos, deberan ser
manejados por las aplicaciones, en la misma forma que cualquier otro error en tiempo de
ejecucin. Desgraciadamente las codificaciones hechas, para unas mismas situaciones de
error, por productos distintos son tambin distintas, con el consiguiente impacto en la
programacin
nadas con un diseo que envuelva, unifique y homogenice el tratamiento de los
errores desplegados desde los mecanismos de persistencia. Todo servicio de persistencia
debera definir una gestin de errores que unifique, homogenice los errores presentados por los
mecanismossoportados.Tpicamentelagestindeerroresestarsustentadaporlautilizacin
devariablesdeestadoyexcepciones.Lasvariablesuobjetosdeestadorecogenelresultado
de xito o fracaso de las opera
einesperadasque no pueden ser tratadas en elflujo rmal del ma, por
ejemplo,lainterrupcindelacomunicacin.
Cuandolatransparencianoescompletamenteortogonal,afectaalmodoenelque
objetos dependientes se relacionan en tiempo de ejecucin, aunque las aplicaciones
manejanlosobjetossinnecesidaddesabersilainstanciaestaonoenmemoriarealmente,
simplemente usan los objetos de igual forma que otros no persistentes, en determinadas
casosesnecesarioconocer,siunainstanciayaestadisponibleenmemoria,siserenviadaa
persistirenelprximociclodeacceso.Tresaspectossonconsideradosaqu:laconsistencia
de referencias desde objetos transitorios a objetos persistentes, los atributos derivados y
55
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
ue apuntan a ese
ue apuntan a objetos persistentes que podran
no esta
tende
cesarioverificarsiesposiblerealizarlaoperacin.Estas
yotras
n
t
, con
numero
reglasdeintegridadcomplejas.Entodosloscasospuedesernecesarioatraparlassealeso
eventosproducidosporlaactividaddepersistencia.
El cierre de persistencia de un objeto no incluye los objetos q
objeto raz del cierre. Objetos transitorios q
r en memoria, as se plantea la validez de esas referencias que de alguna forma
deben ser controladas. Una solucin podra ser emplear referencias inteligentes o proxies
pordoquier.
Los atributos derivados son resultado de un clculo basado en los valores de los
atributos de una o ms instancias, que pueden necesitar que los atributos no persistentes
deban ser inicializados justo despus de la recuperacin de los datos. Tambin podra ser
necesarioqueelvalordeunatributodebaserobtenidojustoeninstantedeconsolidarenel
depsitodedatos,comoejemplo,elcasodelasclavesprimariasautomticasgeneradaspor
elmecanismodepersistencia.
Utilizar reglas de integridad escritas una sola vez y evitar una programacin
defensiva requiere habilitar mecanismos que se activen ante determinadas operaciones o
cambios en el ciclo de vida de lasinstancias persistentes. Por ejemplo cuandose pre
eliminarunainstanciapodraserne
situacionessimilaresmuestranqueseraadecuadodisponerdelafuncionalidadde
poder asociar acciones a determinadas transiciones del ciclo de vida de una instancia
persistente. Monitorizar reiteradamente el estado asociado a una instancia, no es la
solucin idnea. Una solucin basada en los patrones de diseo, los mtodos plantilla,
observador o comando [13], resultan una aproximacin eficiente donde los objetos
interesadosenelcontroldedeterminadoseventosimplantanciertoprotocoloqueindicaa
losserviciosdepersistencia,quienesdebernsernotificadosdelaocurrenciadelossucesos
oportunos. Los servicios de persistencia podran ofrecer la capacidad de notificar los eve tos
relativosalciclodevidadelasinstanciaspersistentesmanejadasporelservicio.
Medidasdeproductividadyrendimiento
Unaspectoopcionalperointeresantedesdeelpuntodevistadelaingeniera,esla
capacidaddetomarmedidassobreelrendimientoylaproductividad.Es asmedidastienen
inters en las fases de optimizacin de las aplicaciones e incluso de diseo y ajuste del
propio servicio de persistencia. Tiempos de transferencia y respuesta, sobrecarga en la
comunicacin, nmero de peticiones por minuto a los servicios los de datos, nivel de
concurrencia,nmerosdeoperacionesporpeticin,tasasdeaciertoyfallosdecach,...Es
posible definir toda una plyade de mediciones, que sirven al propsito de cuantificar el
coste y rendimiento reales, obtenidos con los diseos puestos en prctica. Debemos
considerar que el papel desempeado por los servicios en transparencia es activo
sasoperacionesinternas,novisiblesdesdeelexteriordelosservicios,quetambin
tiene sentido medir. Los servicios de persistencia podran aportar estadsticas sobre su
funcionamientoparaposibilitarelanlisisdelfuncionamientodelassolucionesimplantadas.
Laeficienciadealmacenamiento
Unacuestinrelacionadaconlacorrespondenciaentreobjetosysoportesdedatos
es el almacenamiento. Tener separados los datos y los objetos permite separar la
responsabilidad dejando a cada parte que cumpla su funcin de la mejor manera posible.
Es ms, es un objetivo esencial conseguir la independencia de datos protegiendo a las
aplicaciones contra cambios en la estrategia de acceso y almacenamiento [9]. A primera
vista,noparecenecesarioquelosprogramasseocupendedndeocmosonalmacenados
56
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
fsicame
de prestaciones, pero tambin tiene sus lmites. Habitualmente existe una
unidad
contenedores(objectivity),yenotrosarchivos,
documentos,
una cuestin balad la eleccin e implantacin de una estrategia de
to,nitampocounrequisitoslodegrandesycrticossistemas.Enlaprctica
son num
n necesidad de un elevado nmero de transacciones que balacean la carga
o el ejemplo visto del supermercado. Una ilustracin
tratamiento al vuelo del almacenamiento son los contenedores dinmicos de
Objectiv
anismos de persistencia que
Objectivity, compatibles con
ODMG
manera
los defe
de libre de datos. Los servicios de persistencia podran facilitar la creacin de
registros
imple e
nte sus objetos, los mecanismos de persistencia ofrecen la gestin del
almacenamiento,almenos,lossistemasdebasesdatosrelacionalesylasdeobjetos.
Elalmacenamientodeterminalavelocidaddeacceso,recuperacinyactualizacin
de los datos, y los lmites de concurrencia, volumen y espacio. Parmetros de
almacenamientoquesoncrticosparaquelasaplicacionesobtenganadecuadostiemposde
respuesta. Los principales sistemas de bases de datos utilizan una gestin del
almacenamiento complejay sofisticada, que cubre normalmentela necesidadde satisfacer
la demanda
lgicabsicadealmacenamientoqueserposiblegestionardesdelasaplicaciones,
en los sistemas relacionales las tablas e ndices, en los de objetos colecciones, pginas
(Gemstone,Versant),particiones(Versant)o
etc. Estas unidades permiten a las aplicaciones escoger dnde guardar sus
datos,parasatisfacersusrequerimientossincomprometerlaindependenciadedatos.
No es
almacenamien
erosos los ejemplos que utilizan una gestin dinmica del almacenamiento en
tiempo de ejecucin. Por ejemplo, en los ancestros de la aplicaciones de gestin, la
contabilidad y facturacin era, y es, habitual que en funcin de la fecha de trabajo o
ejercicio, los registros irn a distintos archivos o tablas; las aplicaciones con archivos de
movimientos locales que posteriormente son consolidados contra servidores centrales;
aplicaciones co
sobre diverso almacenamiento, com
del
ity, las particiones lgicas de Versant y las tablas divididas o particionadas de
Oracle.
Seradeseablequetodoserviciodepersistenciapermitieraadministrarelesquema
de persistencia en tiempo de ejecucin y disponer de la facilidad de interactuar con una
interfaz de gestin lgica del almacenamiento de los mecanismos soportados. Resolver la
cuestin con las bases de datos relacionales ser fcil, en principio bastar con lanzar
sentencias SQL apropiadas, para lograr el almacenamiento deseado; la dificultad mayor
estriba en las diferentes interfaces empleadas por otros mec
ofrecen interfaces de programacin propias, como Versant y
3.0.
Laeficaciadeaccesoalosdatosdepende,tambin,engranmedidadelaformaen
laque la correspondenciaobjetosdatos seaestablecida ydel patrn de accesoa los datos,
factoresdeterminantesparaelrendimiento.
En definitiva, los servicios de persistencia podran ofrecer la facilidad de ajustar
dinmicamentelosparmetrosdefuncionamientointernoqueafectanalrendimiento.
Trazabilidad
La trazabilidad es una cualidad deseable para todo diseo de programacin, de
que,permitaanalizarlacorreccindelfuncionamiento,yasistirenlaresolucinde
ctos. El empleo de bitcorasdeactividad, los famososlog, es habitual a todo tipo
ras y servicios
de actividad que permitan asistir en las tareas de prueba y correccin de las soluciones
m ntadas.
57
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Neutra
o con bases de datos relacionales, es posible emplear distintos lenguajes
de
combin
lenguaje
caracter
persistir aje,paraposteriormenterecuperarestosymodificarsuestadodesde
otro len
ad,esaprovecharlaventaja,quepuedesuponerelegirel
aje ms adecuado para cada tarea, la arquitectura dirigida por el modelo (Model
adentreplataformas.Lacapacidadparamanejarobjetospersistentesdesde
Neutralidadrespectodelfabricante.Seraidealquelosobjetoshechospersistentes
sobreunproductodeunfabricantepudieranserrescatadosporproductosdeotros
fabricantes,facilidad atosrelacionalescon
1.2.2.
es surgen, etctera. Obviamente cada organizacin
introdu
productorasdebernadaptarsuprocesodedesarrollo,comoveremos.Lasorganizaciones
lidadrespectoallenguaje
Trabajand
programacin para tratar las mismas tablas, es habitual encontrar soluciones que
an ms de un lenguaje. En cambio, la posibilidad de que objetos creados con un
de programacin sean recuperados para ser usados con otro lenguaje, es una
sticaavanzada,pococomnentrelosproductosrevisados.Crearobjetoshacerlos
conunlengu
guaje, no es practica habitual, salvo en el mundo OMG CORBA. Solo algunos
sistemas de bases de datos de objetos, a los que se ha tenido acceso, ofrecen cierta
neutralidadentreC++,JavaySmalltalkperoconlimitaciones.
Elintersdeestaneutralid
lengu
DrivenArchitecture,MDA)ylassolucionesCORBAsonunclaroejemplo.Noobstante,el
temaesmuycomplejoquedandomuylejosdelpropsitodeestedocumento.
Sindudahaynumerosascuestionesmsquetodavanohansidotratadas.Lasque
aqu han sido expuestas, parecen ser suficientes para establecer un marco de anlisis que
permitaestudiarlascualidadesdelestndarquevaaserobjetodeestetexto.Eneltintero
quedanporejemplo:
mbito de identificadores. Los servicios de persistencia como mediadores deben
manipular identificadores con mbitos distintos, a un lado los lenguajes de
programacin,alotrolosserviciosdedatos,cadaunoconsusreglasyrestricciones
mbitoyuso.
Movilid
distintas plataformas. El formato de almacenamiento, entre otras caractersticas
necesariasydeseablesdeberapermitirciertaneutralidad,respectoalaplataforma
donde los datos son almacenados, posibilitando el acceso y manipulacin sobre
otrasplataformas.ElmundoOMGysussolucionespuedenensearnosbastanteal
respecto.
quepuedeserobtenidaenlasbasesded
SQL.Estoevitaraunadependenciaexcesivadeunsoloproveedordeserviciosde
persistencia.
Todos los requisitos expuestos contribuyen favorablemente al rendimiento,
mantenimientoycostedelosserviciosdepersistenciaquecubranlosrequisitosexpuestos.
Dimensinorganizacional
Estamosinteresados,enconocercomolaorganizacindelaempresaseraafectada
por la incorporacin de un servicio de persistencia ortogonal. Cuestiones tales, como qu
piezas de la cadena de valor seran alteradas, cambios en las relaciones de los actores
implicados, qu nuevas relacion
cir los cambios que estime oportuno, si bien, desde aqu intentaremos anticipar
con una visin general, donde incide la incorporacin de un sistema de persistencia con
soportedetransparenciadedatos.Laadopcindeunserviciodepersistenciaimpactaenla
produccindeprogramas.Afectatantoalasentidadesqueproducenprogramas,bienpara
el mercado o su propio consumo, y las empresas que los consumen. Las organizaciones
58
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
licacinmecnicadetrabajonocualificadoyrutinario,tareasrepetitivasqueno
requiere
noproductoras,tendrnquerevisarsusprocesosdecontratacinygestindesistemasde
informacin.
Laproduccindeprogramas,sesustentaeneltrabajodepersonalmuycualificado
y entregado a su labor. La produccin industrial de programas, no puede ser entendida,
comolaap
n de esfuerzo intelectual. [3]. Un servicio de persistencia, como ocurre con
cualquier otra librera o utilidad para la programacin, no va a permitir producir
programascorrectosconpersonal,sinlaformacinypreparacinadecuadas.
Figura6Laprogramacinrequierecualificacin
Algunosautoresestimanqueun30%delcdigodelasaplicacionesestadedicadoa
tratar la persistencia, siendo esta una de las causas, que impulsa la incorporacin de
servicios de persistencia, e ardar y recuperar
objetos
aque,elesquemade
datos d
reelprogramadordeobjetosyeladministradorodiseadordebasesdedatos,
se incorpor
es
vitar el reiterado cdigo necesario, para gu
transformando datos. La mera incorporacin, como utilidad de programacin, de
unserviciodepersistenciapodrareducirelnmerodelneasdecdigoefectivo,perono
es suficiente, el proceso completo de desarrollo de sistemas de informacin debera ser
revisado. Con las medidas adecuadas, los costes de desarrollo y mantenimiento deberan
mejorar. Tener menos cdigo facilita conseguir cdigo de calidad. Dependiendo de los
sistemas de informacin de que se trate y de la cultura de la organizacin, el reuso y sus
beneficiospodranaumentar.
Emplearunserviciodepersistenciacontransparenciadedatos,permitedesacoplar
losobjetosdelosesquemasdebasesdedatos.Aumentalaflexibilidadantecambiosenlos
requisitos de las aplicaciones y de los sistemas de almacenamiento. Al separar, es posible
posponer decisiones de diseo que no afectan a las partes. Posponer la decisiones, facilita
profundizar en el conocimiento del problema y de la solucin, adoptando finalmente las
decisionesmsacertadas.Nuncaposponerdecisiones,debesignificareludirlosproblemas
quedebenserresueltos.
Laadopcindeunserviciodepersistenciadeobjetosconduce
isminuya de importancia en el diseo de las soluciones frente al modelado de
objetos.
A nivel de papeles o figuras dentro del equipo de desarrollo de sistemas de
informacin, podra ser efectiva una nueva divisin de las responsabilidades. Al habitual
repartoent
a un tercer personaje, que asume la responsabilidad de la gestin de los
esquemas de persistencia, el experto en persistencia. Con una denominacin u otra, la
responsabilidad divididaentrequienestratanconobjetosexclusivamente,losqueestn
59
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
ocupados con los almacenes de datos de la empresa y,ahora, aquellos cuya preocupacin
es,establecerlamejorcorrespondenciaentreobjetosylosdatosdelaempresa.
Figura7Papelesendesarrolloconpersistencia
Des de valor, esto
supone una facilita crecer
acumul
conflicto de intereses entre el desarrollador y el administrador de bases de datos. La
solucin
aptabilidad y
toleranc
produccin de programas, requiere de que todos los actores implicados en la
valor, conozcan las capacidades y limitaciones del servicio de persistencia
adoptad
de un punto de vista de la divisin del trabajo y de la cadena
especializacin en actividades separadas; la especializacin
ando conocimiento y experiencia sobre la actividad asignada. Tambin, puede
suponer una mejora del reuso del conocimiento y del personal, las personas adquieren
mayordestreza,queredundaenmayorcalidadymenorestiemposdedesarrollo,tantopor
la habilidad adquirida, como al posibilitar la concurrencia de tareas, si los papeles son
desempeadosporpersonasdiferentes.
Pero la especializacin tiene sus inconvenientes, el principal inconveniente es, el
pasa, por un mayor conocimiento de ambas partes de las tareas del otro, y una
mejor comunicacin, para ello una posibilidad es, la rotacin en los papeles asignados,
transcurrido un tiempo adecuado desempeando una actividad, se emplaza a asumir el
papeldelotro.Estoconduceaunmejorreusodelconocimiento,unamejorcomunicacin,a
reducir los conflictos de intereses, pues los objetivos convergen, mayor ad
iaacambiosenlasnecesidadesdelacadenadevalor.
Los esquemas rgidos de asignacin de funciones a personas, no terminan de
funcionar bien con las tecnologas orientadas a objetos, las metodologas y mtodos
modernoscomolospresentadosen[25][18]y[3][15],apuestanporfomentarlafiguradel
ingeniero que ocupa distintos papeles en distintos momentos, segn su perfil personal y
destrezas.
La adopcin de un servicio de persistencia no es asunto exclusivo de los
programadores. Alcanzar la correcta implantacin de un servicio de persistencia, en el
proceso de
cadena de
o,conunconocimientoadecuadoasuposicinenlacadenadevalor.
Para las empresas productoras de programas un servicio de persistencia debera
permitir,desdeelpuntodevistaorganizativo:
Posibilitarunaprendizajerpido.
Reducir el nmero de lneas de cdigo efectivo para llevar a cabo la
persistencia.
Introducir mayor flexibilidad en el proceso de produccin: Centrar el
desarrolloenelmodelodeobjetos.Desacoplarlasactividadesrelacionadascon
60
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
61
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
1.2.3.
nuevo estndar. Una tecnologa imperfecta en un mercado en
funcionamientoessostenible;unatecnologaperfectasinmercado,sedesvanecer[31].
Echando la vista atrs solo unos pocos aos, podemos recordar el fracaso en la
adopci
n, siempre y cuando la
implant
s del 2001 que, los mercados para la
tecnolo
osmtodos,nuevasherramientasyestrategiasdeintegracin.
icados. La falta de desarrolladores cualificados es y ser la principal
dificultad para adopcin de Java entre las organizaciones que ofrecen
serviciosenlaRed.
Los prrafos anteriores describen un escenario del mercado donde JDO deber
mostrar su utilidad ante la cautela de las organizaciones para elegir entre JDO y la
competenciadeMicrosoft.NET.
La realidad econmica de la empresa se impone sobre los criterios meramente
tcnicos, la inversin en servicios de persistencia debe ser rentable. Si las cuentas no
cuadran,difcilmentelasempresasinvertirnenpersistenciaJava.
El retorno a la inversin en servicios de persistencia debera proceder de la
reduccin efectiva de los costes de produccin, mantenimiento y amortizacin de los
sistemas en los que son aplicados. A menores costes, manteniendo economa y
productividad, mejora el retorno de las inversiones en desarrollos de sistemas de
informacin. Tambin, el riesgo en las inversiones sobre TIC, as construidos debera ser
menor,habidacuentadelamayorofertaydelaflexibilidadquedeberaaportarunservicio
depersistenciaestndar.
1.3. Resumen
Este primer captulo ha presentado qu se entiende por persistencia de objetos,
algunos de los conceptos ms importantes en torno al problema de hacer perdurar los
objetosmsalldelaejecucindelasaplicacionesqueloscrean.
DimensinEconmica
Los aspectos tcnicos son esenciales, pero son los factores econmicos los que
determinan xito de un
n de tecnologas calificadas como la mejor del momento, basadas en el consenso
entre un importante nmero de los principales productores. Recordemos la pugna
Opendoc frente COM, claramente ganada por el segundo. La estandarizacin supone un
elemento esencial en el abaratamiento de los costes de producci
acindelestndarseaefectiva.Laestrategiadedivulgacinydeintroduccinenel
mercadosonclavesparaalcanzarlaaceptacinefectiva.
El Gartner Group estimaba a principio
ga Java muestran las reglas siguientes [48]: El mercado se mueve hacia usuarios
que adoptan una tecnologa cuando esta ha demostrado su utilidad, cuya eleccin viene
estratgicamente planificada, y a la vista de la experiencia de otros. Estos usuarios
reclamannuev
Las decisiones de compra estn dirigidas ms, a soluciones con respaldo
quealmejorproducto.Solucionescompletasdeunsoloproveedorydelos
grandescanalesmaestrosdedistribucin.
J2EE ha llegado a ser la plataforma para el lado servidor de la soluciones
Java.
Lasnuevasherramientascentrarnsuintersenlosmodelosdedesarrollo
deaplicacionesparalosnuevosemergenteseservicios.Estasherramientas
deben permitir crear soluciones reales con desarrolladores poco
cualif
62
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
s
el
La dificultad de nsin del lenguaje
de programacin, y la encia mediante la
utilizacin de servicios de persistencia de objetos bajo la forma de framework de
persiste
La idea fundamental es que la capacidad necesaria para persistir los objetos debe
erlomsindependientedellenguajedeprogramacinydelmedioutilizadoparasoportar
estadopersistentedelosobjetosqueperduran.
incluir la capacidad de persistir como una exte
tendencia del mercado, es solventar la persist
ncia.
Han sido concretado una serie de requerimientos debe satisfacer un servicio de
persistencia de objetos, que ofrezca transparencia de datos, persistencia por alcance, sea
ortogonal a tipos y mecanismos de persistencia, que asegure la integridad transaccional y
referencial de los objetos persistentes y sus relaciones, adaptable a diferentes contextos y
arquitecturas,yquelogreunrendimientoadecuado.
En el plano de la empresa, la adopcin de un servicio de persistencia implica
cambios en la produccin de programas con nuevas figuras, responsabilidades y
actividades, pero siempre considerado que la inversin en servicios de persistencia debe
serviableyrentable.
63
Capt ul o 2
EQUI VA LAS
LACI ONAL
Este tra en su primer tulo, que todo rsistencia de
objetos,debeutilizarlasbasesdedatosrelacionales,pararecogerlosestadosdelosobjetos
persistentes La cuestin de cmo hacer corresponder objetos en relaciones y viceversa,
siemprehasidodeobjetointersdeestudio,anlisisypropuestadesolucinennumerosos
trabajosdemerec onocimiento,algun esostra captulo,
las propuestas de A. Keller, S. Ambler, C. Priese, J.Rumbaugh W. Keller y R.G.G.Cattell,
sustentanlasideasrecogidasacontinuacin.
ste cap ribe las ideas fundamentales de la solu al problema de la
correspondenci , sin entrar en rofundidad, pues necesitara de todo un
proyecto fin de carrera. Las tcnicas de correspondencia presentadas, sern ilustradas con
diagramasylistadosdeejemplosprcticos.
2.1. Faltad Tabla
utilizadosparamodelarlasrealidades,que
seespecificalosatribu ortamientode
la realidad e objetos. Un tabla especifica los datos de la entidad que
representa, concreta una relacin entre valores de los dominios de los datos escogidos.
Ambos capturan caractersticas de inters para
caractersticasligadasalcomportamientoenejec P
cla ica m p
tabla toma su sentido esencialmente, de servir
datos que modela. No hay por tanto, una e y nica entre ambos
conceptos.Tampocoaniveldelaimplementacinesposibleunaequivalenciadirectaentre
los tipos de datos sobre los que se construye
sistem cturad p
usado;unatablanopuedeutilizarunvectoro rotras
relaciones(tablasovistas),conlasquemodelarestosatributoscomplejos,habitualmentesu
sistema de tipos es diferente de aquellos pr e
programacin, ite utilizar estructuras s
(hoy SQL99 s soporta tipos estructurados, co una
dificultadofaltadecorrespondenciaentreambosmodosderepresentarlasentidadesque
manejan nuestrosprogramas,quedeberemossercapacesderesolver.Latareadecrearuna
corresp
cionesentretablas.
Laherenciasobretablas.
Todo ello a simple vista parece ser sencillo, directo y sin complicaciones, pero
resulta una tarea difcil cuando se requiere conseguir eficiencia, alto rendimiento,
LENCI A CLASE - TAB
RE ES
bajo seala cap servicio de pe
idorec osde bajossonlabasedeeste
tulo desc
a clasetabla
cin
p
eCorrespondenciaClase
Claseytablasonconceptosdiferentes,
despusmanejanlasaplicaciones.Unacla
que modela, defin
tosyelcomp
a
la aplicacin, pero la tabla ignora aquellas
ucin,cosaquesimodelalaclase. arala
osiblemente independiente, en cambio, la
al propsito de persistir y compartir los
quivalencia exacta
se, la persistencia es una caracterst s,
n clases y tablas, una clase aprovecha el
rovisto por el lenguaje de programacin
rbolcomoatributo,necesitadecrea
a de tipos primitivos y estru os,
esent s en los principales lenguajes de
de datos como dominio de los atributos
mo atributos). En definitiva, existe
y no perm
adalcambio,facilidaddemantenimientoyserequieredarrespuestaalaherencia
conceptosnosoportadosporelmodelorelacional.Lacuestinpuedeser
plantea
roducenrigidez,faltade
flexibilidadalcambio,alaevolucin,yesfrenoanuevasmejoras.
idad oportunos. En la prctica, un
modelo
elmejoresquemaderelacionesadecuado,aun
un sistema legado, con un esquema relacional
previo
podemospartirdeequivalenciasdelaTabla1.
flexibilid
yelpolimorfismo,
dadesdeunenfoquedominadoporunodelosextremosdelacorrespondencia,los
objetosoporlosdatos,resultandoenmodelosquenoseajustanalosprincipiosclsicosde
diseo e implementacin establecidos en lado dominado. La idea clave en la
correspondenciaentreclasesytablas,esconseguirunesquemasimple,sencilloyclaro,los
esquemasdetraduccincomplejossinunciertopatrnsencillo,int
La creacin del esquema de correspondencia, puede ser realizado desde dos
perspectivas, una centrada en el modelo de datos, donde las tablas dirigen el proceso de
creacindelacorrespondencia,buscandogenerarlasclasesqueseamoldanacadatabla;y
otra perspectiva, enfocada desde el modelo de objetos, que impulsa encontrar un modelo
detablasqueseaelmsapropiadopararepresentardeunformaeficazlosobjetos.
Enmimodestaopinin,experiencia,comopartidariodelaorientacinaobjetosy
desde la perspectiva de este trabajo, que es utilizar las bases de datos para almacenar los
estadosdelosobjetos,elmodelodeobjetosdedominarelesquemadepersistenciabasado
en un modelo de entidadrelacin, se debe procurar no forzar cambios en el modelo de
objetos,porelhechodeemplearunabasededatosrelacionalparapersistirlosobjetos,pero
al mismo tiempo, es necesario sacar partido de las capacidades ofrecidas por el modelo
relacional, para conseguir un rendimiento e integr
purodeobjetos,trasladadoaunesquemaderelaciones,suelecasarcondificultady
resulta en un pobre rendimiento; el enfoque contrario, centrado sobre el modelo entidad
relacin, favorece el rendimiento concurrente y es ms fcil de convertir en clases 0, pero
suele carecer de ventajas de un buen diseo orientado a objetos; es fcil caer en clases
vacas de funcionalidad, que ms bien representan registros con nula reusabilidad. Los
modelos de tablas creados a partir de un modelo de objetos, pueden conducir a modelos
relacionales poco tiles, desde el punto de vista de los usuarios finales, pero gracias a la
potencia expresiva de SQL y la vistas, normalmente, se logra construir una visin de los
datosmsadecuadaparaelusuariofinal,singravepenalizacinparaelrendimiento.Son
muchos losque consideran mejor, partir de una representacin relacional porsu facilidad
parasermanipuladayentendida,adems,desumejorrendimientoenconcurrencia,para
despus,enbasealastablascrearunmodelodeobjetosacorde.Entrequienesprocedende
la cultura de la programacin orientada a objetos, existe una postura de considerar una
aproximacinoportunista,dondesegenera
modelo de objetos, salvo que se parta de
a continuar, en cuyo caso es mejor seguir un enfoque dirigido desde el modelo
esquema relacional. En una primera aproximacin, para establecer una correspondencia
entreclasesytablas
66
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
nciaModel EsquemaRelacio
lode etos lo lacional
Columna
AtributopersistenteReferenciaaobjetos
contipoconocido
ClaveAjena
Atributopersistentetipocoleccin
Nohayequivalenciadirecta,debeseruna
relacin, si la cardinalidad es (m:n),
entonces una entidad de asociacin; Si
las relaciones (1:n), entonces atributos en
correspondientes.
AtributopersistentedeClase
Una tabla con las caractersticas comunes
atodaslasinstanciasdeunaclase.
Herencia atributos de instancia de la jerarqua
herenciacompletaomltiplestablas
Una relacin agregada con todos los
2.2. Iden
claveprimaria,estoes,identificaracadaobjeto.
primer captulo, que puede ser satisfecho con distintas alternativas,
porejemplo,
es, el uso de una clave primaria automtica, que incluya un indicador de la
clase del objeto correspondiente. Esto permite aprovechar la potencia de la integridad
referencial de las bases de datos relacionales, utilizando una sola columna, evita accesos
adicionales a los datos para determinar el tipo, no fuerza la introduccin de campos
adicionales,permiteunmayorreuso,mejormantenimientoeintroducemenoscomplejidad
enelcdigodelosprogramas,aunqueconllevaunaligerasobrecargaporextraereinsertar
lasealdetipoenelcampodeclaveprimaria.Laclaveautomticapodraseruncontador
obtenido, a partir de una tabla de contadores comn, o una secuencia generada por el
SGBDR,comoenOracle,SqlServer,SqlBase,oPostgreSQL,omediantealgunaformulacin
hashing. En JDO, el modelo de identidad por aplicacin da soporte a la identidad por
claves primarias, exigiendo la inclusin de nuevas clases que representan estas claves
primariasverificandociertaspropiedades.
En el ejemplo del banco Figura 1 con las clases Cliente, Cuenta y Movimiento,
desdeunpuntodevistarelacional,seraposibleestablecerlassiguientesequivalenciapara
clavesprimarias:
Tabla2ClavescandidatasenelBanco
Clase Atributo Tabla Columna
tidad
Laequivalenciaentreidentidadesdeobjetosyrelaciones,eslacorrespondenciade
identidad persistente a claves primarias. El identificador persistente de los objetos puede
ser, o una caracterstica ajena a los objetos construida y gestionada por el servicio de
persistencia, o bien, un conjunto de atributos de los objetos persistentes que satisfacen la
singularidadde
Debemosmencionardosaspectos,unolaeleccindeclavesprimarias,elotroesla
necesidaddeconocereltipodelosobjetospolimrficos.Losobjetosconcretansuidentidad
mediante identificadores internos al sistema, carentes de significado para el usuario; en
ladorelacional,hoyporhoy,tambinlosprincipalesSGBRempleanidentificadoresdefilas
automticos e internos, pero habitualmente, las claves elegidas tienen significado, son
dependientes del valor de unos o ms atributos con sentido para el usuario final, lo que
ante cambios de la estructura de estos atributos, el esquema y cdigo de los programas
tienen que ser modificados. Desde aqu, se recomienda la utilizacin de claves primarias
sin significado en los esquemas relacionales, utilizando secuencias, contadores o tickets.
Conservar el tipo de las instancias, su clase, junto a los datos de estas instancias es un
requisito, visto en el
unatablautilizadacomodiccionario,unacolumnautilizadacomoselector,o
enlapropiaidentidadembutidaenlaclaveprimaria.
Un enfoque bastante prctico y que facilita un nivel rendimiento adecuado, para
lograr la identificacin en un gran nmero de casos, til para ambos lados de la
equivalencia
Cliente Nif Cliente Nif
68
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
69
Cuenta CodigoCuenta Cuenta CodigoCuenta
Movimiento Movimiento
Listado12IdentidaddelaclaseClienteentablasconMySQL.
Lacorrespondenciaescogidaenestecaso,sevaledeuntablacontadorparagenerar
el valor dela columna OID, que esla clave primaria y el campoCLASS p conservar el
tipo. Obviamente, CLA ro que la clase
Cliente
public class Cl i ent e
implements Ser i al i zabl e
{
/ **
* I dent i f i caci n del cl i ent e
*/
protected St r i ng ni f ; .
CREATE TABLE `cl i ent e` (
`CLASS` varchar( 255) default NULL,
`OI D` bi gi nt ( 20) NOT NULL default ' 0' ,
`NI F` varchar( 255) default NULL,
ara
SS hace falta para cubrir el polimorfismo. Si es segu
noformarpartedeunarelacindeherencia,Clientenuncausardepolimorfismo,
entonceslacolumnaCLASSpodrasereliminada.Comovemoselni f ,essimplementeun
atributoporelqueconsultar,aunqueconndicesenelRDBMS,sepodraforzarqueexistan
valoresnicossinafectaralcdigoJava.
Otra cuestin que se revela interesante la Tabla 2, es la ausencia de atributos que
puedan ser clave primaria para la clase Movimiento. Esta situacin es normal en los
modelos de objetos, lo cual es otro argumento ms, para utilizar claves primarias sin
significado,gestionadasporelRDBMScomoelidentificadorOIDdelejemplo,queobtiene
suvalordeuncontadorbasadoenlatablasequence.
2.3. Conversindeclasesentablas
Lacorrespondenciamsdirectaysimple,eshacercorrespondercadaclaseconuna
tabla,ycadaobjeto,conunafiladelatabla,steeselpuntodepartidaparalaconstruccin
delacorrespondenciaentreunmodelodeobjetosyunesquemarelacional.Lostrabajosde
A. Keller [41], A.Brown [6], S.Ambler [32], ensean que la correspondencia entre clases y
tablasdebeserdirecta,deunaclaseaunatabla,yviceversa,estafrmulaescorrectaparala
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
fectuarelprocesodetraduccin
entre lo
corresp
De est
normal
recuper
desnorm
introdu
column
persiste lmacenados en columnas blob, e incluso dado el caso, hacer persistir
atributo era
de trad
actualiz
con la
objetoc
proceso
acceso
caracter
claseta
mayora de los casos, porque planteamientos ms complejos, pueden implicar falta de
rendimientoyproblemasenlasactualizaciones.
LatablaanteriorTabla1,espuntodepartidaparae
s modelos relacionales y de objetos, donde en principio, a cada clase se le hace
onderconunatabla,acadaatributopersistenteunacolumnaenlatabladesuclase.
a forma, se construye un modelo de tablas, que inicialmente debera estar
izado.
Los modelos normalizados, con frecuencia adolecen de bajo rendimiento al
arodesgranarlosobjetossobrerelaciones.Esentoncescuandosedebeprocedera
alizar los relaciones para mejorar el rendimiento y valorar la oportunidad de
cir cambios como son, modificar los esquemas legados existentes con nuevas
as, serializar ciertos atributos, objetos completos que forman parte del cierre de
ncia, son a
s fu de la base de datos, como archivos. Situaciones que complican, el proceso
uccin, tomando decisiones, que deben considerar cmo van a ser accedidos y
adoslosobjetos,sielaccesoseproducealiterarsobreunconjuntoodirectamente
identidad, concurrentemente por varios procesos simultneos o navegando desde
ontenedor...
Esimportantequelosserviciosdepersistenciapermitanplanteamientosflexiblesal
de correspondencia clasetabla, conjugando el propsito de persistencia, con el
correcto a los datos y un rendimiento suficiente. Esta flexibilidad es una de las
sticas, que ms distinguen a buen producto para crear esquemas de persistencia
bla.
70
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
CORRESPONDE
CORRESPONDE
1..*
1
CORRESPONDE
1..*
1..* 1..*
1..*
movimiento
-FECHAOPERACION:Timestam
-FECHAVALORACION:Timesta
-IMPORTE:double
-J DOCLASS:String
-J DOID:long
-J DOVERSION:int
-MOTIVO:String
-APUNTES_J DOID:long
cliente
-J DOID:long
-J DOCLASS:Strin
-J DOVERSION:in
-NIF:String
cuenta
-J DOID:long
-J DOCLASS:String
-J DOVERSION:int
-CODIGOCUENTA:Strin
-DEBE:double
-HABER:double
-LIMITECREDITO:doub
-SALDO:double
banco.Movimiento
+Movimiento
+toString:String
motivo:String
importe:double
fechaValoracion:Dat
fechaOperacion:Date
InstanceCallbacks
banco.Cuenta
#debe:double
#apuntes:HashSet
#haber:double
+Cuenta
+aperturaCuentaNuevoClient
+cargo:boolean
+abono:boolean
+refundirMovimientos:void
#anotaMovimiento:void
+getApuntes:Collection
+setApuntes:void
+toString:String
+jdoPreDelete:void
+jdoPostLoad:void
+jdoPreStore:void
+jdoPreClear:void
codigocuenta:String
saldo:double
limiteCredito:double
titulares:HashSet
InstanceCallbacks
banco.Cliente
#nif:String
#cartera:HashSet
+Cliente
+toString:String
+jdoPreDelete:void
+jdoPostLoad:void
+jdoPreStore:void
+jdoPreClear:void
+carteraElimimable:boolea
+addCuenta:void
NIF:String
2.4. Rela
an como atributos de instancia, cuyo tipo es la clase
asociada, o un tipo coleccin con objetos de la clase relacionada. Dependiendo de la
Figura8EquivalenciaclasesdelBancoentablassinrelaciones
EnlaFigura8,cadaclasecorrespondeconunatabla,cadaatributocorrespondecon
lacolumnadelmismonombre,yalavistaesta,quelostiposdedatosdelascolumnasson
distintos, pero equivalentes a aquellos de los atributos que representan. Como se ver la
regla de uno a uno entre clases a tablas, se debe romper cuando se persiste atributos
multivaluados(arrays,vectores,)yjerarquasdeherencia.Otroselementosqueatraenla
atencinsonlascolumnasquenocorrespondenconlosatributosdeclase:JDOI,queesel
identificadorclaveprimariayJDOVERSION,agregadaparaincorporarlafuncionalidades
deversionadoybloqueooptimista.EnlaFigura8esunacorrespondenciaincompleta,hay
atributosdondenoaparecesucorrespondientecolumna,sonlosatributosquedefinenlas
relacionesdeagregacinycomposicinentrelasclases.
cionesdeAgregacinyComposicinaclavesajenas
Las relaciones de agregacin y composicin entre clases, son traducidas a
relacionesentretablasmedianteclavesajenas,aslasrelacionesentreobjetossontrasladas
a relaciones entre filas, a travs de los valores de las columnas que son clave ajena. Las
relaciones entre clases se materializ
71
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
ardina
senunamismaclaseensurelacionesconotras:
A. Embeber las claves ajenas en las tablas correspondientes a las clases con
relaciones 1:1 o 1:n. En una relacin de uno a uno, cada tabla aade una columna
clave ajena de la otra. Para la relacin de uno a varios (DepartamentoEmpleado),
lastablasdelosobjetosquesonagregados(laspartes),aadenlaclaveajena(clave
ajena inversa) a la tabla de la clase que hace de contenedor (el todo), incluso si la
clase contenida no tena un atributo equivalente. El atributo coleccin de la clase
contenedor (lado uno de la relacin) no necesita mapeo a una columna. Este
planteamiento muestra un rendimiento intermedio frente a otras alternativas, es
flexible al cambio de la estructuras y permite toda suerte de actualizaciones y
consultas.
B. Utilizartablasdeas lasclasessonm:ny1:n,
esnecesariocons ecadaelementodela
ncia de proces
asociadaunatabla,ylaasociacinen
as a ca
sont
to
jenas, son rep
atributos ndice o selector del
composicin, la supresinde unafil in
, la clave
illa para rela eor
rendimiento al navegar, travs de
tenidoscomo rtedeotros,sonrepresentadosenlatabla
oinsertandoenlatablasusatributos,oincluyendoun
campo especial. Cuando cada clase tiene un atributo del tipo de la otra clase
asociada, ambas clases son asignadas a la misma tabla. Un ejemplo sera clase
direccin embebida en la clase Persona, que aade a la tabla de PERSONA, los
mismo sicin
ite la actualizacin concurrente sobre los elementos
cionadas
roveedoryEmpleado).
Insistir que estas alternativas no son excluyentes entre s, pueden ser combinadas
enladefinicindelacorrespondenciaparaunamismaclase.Cadaestrategiadifiereensu
rendimiento, sus posibilidades de recuperacin selectiva y actualizacin concurrente, su
niveldeacoplamientoyenlafacilidadparasermanejadosconSQLconsencillez(elacceso
a los campos blob desde SQL no es ni obvio, ni fcil en la mayora de los principales
c lidaddelarelacin,deltipodeasociacin,agregacinocomposicin,yporltimo,
delanecesidaddeconsultayactualizacin,sonaplicadasdistintastcnicas,quepuedenser
combinada
ociacinsilasrelacionesentre
ultaryma dualment ocuando
relacin, en concurre
nipularindivi
os diferentes. Cada clase en la relacin tiene
treestasclases,serepresentasobreotratabla,
s que mantiene las claves ajen da una de tablas respectivas asociadas a la
clases.Lastablasdeasociacin ambin,lacorrespondenciaadecuadaparalas
de clasesdeasociacin[5]ylosatribu stipodiccionario(Map,HashMap,etc),don
entados los atributos de la asociac adems de la claves a res in o los
ndice del ario. una diccion Si relaci n es
supres a del todo, o contenedor,implica la
de lasfilas con clave ajena
menos acoplada y senc
eliminada. Se trata dela frmula ms flexible,
cionar varias clases, pero tambin la de p
la asociacin, de unos a otros objetos con
reiteracin.
C. Losobjetoscon
delaclasequeloscontiene,
pa
s campos que la tabla DIRECCION. Si la relacin es 1:n de compo
(p.ej. rbol compuesto por ramas), el atributo coleccin que aglutina los objetos
contenidos, podra ser hecho corresponder con una columna blob o similar, que
contendr los identificadores (las claves primarias) de los objetos, o los propios
estadosesosobjetoscontenidos.Laeleccindependerdequetratamientodebase
datos se aplique a los objetos contenidos. Esta alternativa es bastante eficaz
respecto al rendimiento, dado que requiere menos accesos, pero es menos flexible
al cambio, al reuso y no perm
individuales de las colecciones desde otros procesos, presenta la dificultad de
mantenimiento al representar una misma clase en diferentes contextos, por
ejemplo, la clase Direccion integrada dentro de distintas clases no rela
(P
72
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
sistemas de bases de datos relacionales). Entre los productos revisados los hay que
desgrananlascoleccionessobretablas,conunafilaporobjetoexclusivamenteyotros,que
permiten adems almacenar las colecciones en columnas blob, con gran rendimiento en
recuperacin o grabacin, pero lentos en la localizacin de un objeto contenido concreto
que satisface cierta condicin; los productos vistos mayoritariamente aprovechan la
capacidaddepropagacindelasactualizacionesdelRDBMSanfitrinenlasrelacionesde
composicin, y todos permiten ajustar la correspondencia en base las tcnicas expuestas.
VeamosaplicadaslastcnicasdeesteapartadosobreelejemplodelBanco.
cuenta
J DOID INTEGER
CODIGOCUENTA (O) VARCHAR(255)
DEBE (O) FLOAT
HABER
J DOCL
J D
movimiento
J DOID INTEGER
APUNTES_J DOID (O) (FK,IE1) INTEGER
FECHAOPERACION (O) DATETIME
(O) FLOAT
ASS (O) (IE1) VARCHAR(255)
FECHAVALORACION (O) DATETIME
IMPORTE (O) FLOAT
J DOCLASS (O) (IE2) VARCHAR(255)
J DOVERSION (O) (IE3) INTEGER
MOTIVO (O) VARCHAR(255)
OVERSION (O) (IE2) INTEGER
LIMITECREDITO (O) FLOAT
SALDO (O) FLOAT
clien_cartera
CARTERA_J DOID (O) (FK,IE1) INTEGER
J DOID (O) (FK,IE2) INTEGER
cliente
J DOID INTEGER
cuent_titulares
TITULARES_J DOID (O) (FK,IE2) INTEGER
J DOID (O) (FK) INTEGER
J DOCLASS (O) (IE1) VARCHAR(255)
J DOVERSION (O) (IE2) INTEGER
NIF (O) VARCHAR(255)
Figura9MapeodelasrelacionesdelasclasesdelBancoenRDBMSMySQL
La figura anterior muestra la representacin en tablas de las relaciones entre las
el banco aplicando las tcnicas B y A. Las relaciones entre Cliente y Cuenta,
das por los respectivos atributos cartera y titulares, son trasladas a sendas tablas
o la tcnica del apartado B (entidades azules), porque una misma cuenta puede
en la cartera de diferentes clientes, un cliente puede aparecer como titular de ms
cuenta y es posible, que una cuenta est en la cartera de un cliente no siendo ste
eesacuenta.Lastablasderelacinhansidonombradassiguiendoladenominacin
bre de tabla de la clase que contiene el atributo ms nombre del atributo. Las
asOID,enCUEN_TITULARESesclaveajenaaCUENTAyenCLIENT_CARTERA
ornea a CLIENTE, no son clave primaria en ambos casos; la columna
RES_JDOI es clave ajena de CLIENTE y APUNTES_JDOI, de CUENTA, ambas
clases d
expresa
aplicand
figurar
de una
titulard
del nom
column
clave f
TITULA
column n
origen.
pertene
aadien
APUNTES_O
estaaso
asson ominadasconelnombredelatributocoleccinensusrespectivasclasesde
La relacin composicin de Movimientos en Cuenta, donde cada Movimiento
ce a una nica Cuenta que lo contiene, se traduce con la tcnica del apartado A,
do a la tabla MOVIMIENTO, una columna clave ajena a CUENTA,
ID,quecontendrelvalordelaclaveprimaradelainstanciaCuentaalaque
ciadoelobjetomovimiento.
73
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
ailu
ms de
direcci
Falt strarlatcnicadelapartadoCdondeunamismatablaaglutinaobjetosde
una clase, veamos la traduccin a tablas de la clase Persona con su atributo
n.
Persona
-nombre:String
1 1
-apellidos:String
-nif:String
-direccion:Direccion
Direccion
-via:String
-num:int
-domicilio:Domicilio
-codpostal:CodigoPosta
Figura10ClasePesonayDireccion
public class Per sona
{
private St r i ng nombr e;
private St r i ng apel l i dos;
private Di r ecci on di r ecci on;
private St r i ng ni f ;
}
public class Di r ecci on
{
private St r i ng vi a;
pr i vat e i nt num;
private Codi goPost al
codpost al ;
}
Listado13CorespondenciaClasePersonaqueembebeinstanciasdeltipoDireccion
El listado anterior ensea como la correspondencia escogida, proyecta la clase
Persona sobre la tabla del mismo nombre, incluye adems los atributos necesarios para
almacenar el estado de sus instancias Direccin, junto al resto del estado de Persona, sin
necesidad de usar otras tablas. Esta correspondencia de composicin donde las instancias
Direccin,sonembebidasencadaobjetoPersona,esindependientedequeclaseDireccin
seaobjetodeotrascorrespondencias.
Otro
74
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
75
1 nodo padre
nodo terminal
5
1
1..5
nodo padre
nodo hijo
Collectio
java.io.Serializab
ArrayOfObjec
-pVF:Vector
empty:boolean
java.io.Serializab
MyClass
i:int
d:double
string:String
strings:String[]
+MyClass
Figura11DiagramadeclasesdeunrboldecinconivelesycincohijossuequivalenteER.
En la anterior figura se aprecian que el atributo pVF de tipo Vector, es traslado a
unacolumnadetipoBlob,dondesealmacenaelrbolserializado,quependedelnodoraz
insertadocomofilaenlatablaarrayobject.
2.5. LaHerenciaenfilasyreunin(join)
]. Son
propuestas atendiendo a cmo son distribuidos los atributos sobre relaciones, tres modos
decorrespondenciapararepresentarunajerarquadeherenciasobretablas,:
A. Divisin Vertical. Cada clase en la jerarqua persiste en una tabla distinta,
en correspondencia uno a uno. Los atributos propios (no heredados) son
representados slo en las columnas de tabla correspondiente a la clase que los
declara.Deestaforma,unmismoobjetopodranecesitarpersistirsobremsdeuna
tabla,lastablasdesusancestrosylatabladesutipo.Laclaveprimariadelatabla
delaclaverazdelaherencia,eslaclaveajenaenlastablasdelosdescendientes.Es
elmodoqueseadaptamejoralmodelodeobjetos,incluidaherenciamltiple,yel
quemejormantenimientopresenta.Elproblemadeestafrmulaes,lapenalizacin
al rendimiento y a la concurrencia cuando, la jerarqua de herencia es profunda,
tres o ms niveles, pues son necesarias sentencias SQL con una reunin (join) de
todas las tablas implicadas. Este es el error clsico en la correspondencia clase
tabla, cuando los atributos de los objetos estn dispersos verticalmente en la
jerarqua, o los objetos pueden pertenecer a varias clases simultneamente. Es
apropiado utilizar la divisin vertical de la herencia, cuando la profundidad de la
jerarquaesbaja,ylosobjetosnorepresentandiferentespapelessimultneamente.
B. Divis ientes)enla
arrayofobject
J DOID INTEGER
J DOCLASS (O) (IE1) VARCHAR(255)
J DOVERSION (O) (IE2) INTEGER
PVF (O) LONGVARBINARY
jdo_sequence
ID TINYINT
SEQUENCE_VALUE (O) INTEGER
mycla_strings
J DOID (IE1) INTEGER
STRINGS_ORDER INTEGER
ELEMENT VARCHAR(255)
myclass
STRINGS_ORDER (FK) INTEGER
J DOID (FK) INTEGER
D (O) FLOAT
I (O) INTEGER
J DOCLASS (O) (IE1) VARCHAR(255)
J DOVERSION (O) (IE2) INTEGER
STRING (O) VARCHAR(255)
Al igual que sucede con las relaciones entre clases, cmo sea definida la
correspondenciadelaherenciaentreobjetos,tieneunmarcadoimpactoenelrendimiento,
en particular, las sentencias SQL de reunin para obtener los valores de los atributos
heredados. Las referencias [16], [32], [41] coinciden en el planteamiento, que tiene su
fundamento, en las propuestas de J. Rumbaugh y M. Blaha, en su mtodo OMT [30
inHorizontal.Cadaclaseconcretaterminal(sindescend
jerarqua, le corresponde una tabla que contiene todos los atributos, heredados y
propios,paralosatributosredefinidossonaadidasnuevascolumnasadecuadasal
tiporedefinido.Ofreceunbuenrendimientopuessolohayqueaccederaunafila,
pero una pobre adaptabilidad al cambio en la estructura. El soporte del
polimorfismo requiere el trasvase de datos y conseguir la integridad con herencia
mltipleescomplicado.
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Figura12DiagramadeclasesdeDireccin
La clase Direccin es una clase abstracta, no puede construir instancias, sirve para
compartir el cdigo de las subclases y permite que las clases cliente Persona y Proveedor
utilicen una referencia polimrfica a objetos Edificio, Residencia, Urbanizacin u
Organizacin. La clase Direccin se debe indicar que es persistente, pese a ser abstracta,
pues Direccion debe persistir su atributo domicilio. Los productos necesitan esta
informacin para construir el esquema de traduccin. Veamos una primera traduccin de
en relaciones, empleando la divisin por tipos, elegida porque nunca
mutar de un tipo a otro, o mostrar dos papeles, los tipos son
exclusiv
la jerarqua anterior
una misma instancia
os.
76
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
jdo_sequence
PK ID TINYINT
SEQUENCE_VALUE INTEGER
persona
PK JDOID INTEGER
APELLIDOS
I2 J DOCLASS
VARCHAR(255)
VARCHAR(255)
I3 J DOV
NIF
ERSION INTEGER
VARCHAR(255)
NOMBRE VARCHAR(255)
codigopostal
PK JDOID INTEGER
CODIGO VARCHAR(255)
I1 J DOCLASS VARCHAR(255
I2 J DOVERSION INTEGER
)
PROVINCIA INTEGER
proveedor
PK JDOID INTEGER
I2 J DOCLASS VARCHAR(255)
I3 J DOVERSION INTEGER
RAZONSOCIAL VARCHAR(255)
direccion
FK2,I1 CODPOSTAL_J DOID INTEGER
DEPARTAMENTO VARCHAR(255)
FK1,I2 DOMICILIOINTERNO_J DOID INTEGER
ESCALERA INTEGER
HABITACION INTEGER
I3 J DOCLASS VARCHAR(255)
I4 J DOVERSION INTEGER
NOMBRE VARCHAR(255)
NOMBRE1 VARCHAR(255)
NUM INTEGER
NUMERO INTEGER
PARCELA INTEGER
PLANTA INTEGER
PLANTA1 INTEGER
PUERTA INTEGER
SECCION VARCHAR(255)
VIA VARCHAR(255)
J DOID INTEGER
Figura13CorrespondenciadeDireccinsegnmtododedivisinportipo.
En la figura anterior vemos como se aprovecha la capacidad del RDBMS, para
asegurar la integridad referencial con claves ajenas. El otro aspecto que destaca es la
presencia de las columnas nombre, nombre1, correspondientes con los atributos
denominados nombre en Organizacin y Urbanizacin respectivamente, y las columnas
plantayplanta1quecorrespondenconelatributoplantadeEdificioydeResidencia.
jdo_sequence
PK ID TINYINT
SEQUENCE_VALUE INTEGER
organizacion
PK,FK1 JDOID INTEGER
DEPARTAMENTO VARCHAR(255)
FK2,I1 DOMICILIOINTERNO_J DOID INTEGER
NOMBRE VARCHAR(255)
persona
PK JDOID INTEGER
APELLIDOS VARCHAR(255)
FK1,I1 DIRECCION_J DOID INTEGER
I2 J DOCLASS VARCHAR(255)
I3 J DOVERSION INTEGER
NIF VARCHAR(255)
NOMBRE VARCHAR(255)
codigopostal
PK JDOID INTEGER
CODIGO VARCHAR(255)
I1 J DOCLASS VARCHAR(255)
I2 J DOVERSION INTEGER
PROVINCIA INTEGER
proveedor
PK JDOID INTEGER
FK1,I1 DIRECCION_J DOID INTEGER
I2 J DOCLASS VARCHAR(255)
I3 J DOVERSION INTEGER
RAZONSOCIAL VARCHAR(255)
direccion
PK JDOID INTEGER
FK1,I1 CODPOSTAL_J DOID INTEGER
I2 J DOCLASS VARCHAR(255)
I3 J DOVERSION INTEGER
NUM INTEGER
VIA VARCHAR(255)
residencia
PK,FK1 JDOID INTEGER
HABITACION INTEGER
PLANTA1 INTEGER
SECCION VARCHAR(255)
urbanizacion
PK,FK1 JDOID INTEGER
NOMBRE1 VARCHAR(255)
NUMERO INTEGER
PARCELA INTEGER
edificio
PK,FK1 JDOID INTEGER
ESCALERA INTEGER
PLANTA INTEGER
PUERTA INTEGER
Figura14CorrespondenciaverticaljerarquadeherenciaDomicilio
La correspondencia producida por divisin vertical, resulta en relaciones
normalizadasenterceraformanormal(3FN).Nohayredundancia,yesposibleaprovechar
la integridad referencial ofrecida por las bases de datos relacionales. El esquema fsico de
relacionesesparaleloalajerarquiadeherencia,laregladeunoaunovistasecumple.Esta
tcnicaofrecelamayorflexibilidadalamodificacineincorporacindeatributos.Elmayor
77
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Figura15TablasparalasclasesdeDireccionusandodivisinhorizontal.
En la divisin horizontal los atributos heredados y propios son colocados en una
mismatabla,resultamuyeficazelaccesoalosdatos.Laprincipaldesventajadeestatcnica
dedivisinhorizontal,essupeorflexibilidadalcambio,frentelamodificacinoadicinde
atributosalasclases,porqueobligaarevisartodaslasrelaciones.Otroelementopatentees
la imposibilidad para aprovechar la integridad referencial, como en la figura anterior, las
clases Proveedor y Persona no concretan una relacin de claves ajenas, el servicio de
persistencia responde de la integridad de los vnculos. En este ejemplo, basado en el
productodeSolarmetric,KODO,lasentidadescliente,PersonayProveedor,incluyenuna
columna DIR_STROID, que contiene el identificador persistente y el tipo del objeto
asociado, as resuelve el polimorfismo con referencias persistentes y la integridad
referncial.
2.6. DetablasaClases
Aunque estemos ms interesados en la prctica de convertir objetos en tplas,
tambin es necesario, al menos, introducir brevemente cmo transformar tablas en clases.
Laideaesencialeslamismavistacuandoseproponalaequivalenciaenelsentidoclasea
tabla, para cada tabla se crea una clase que representa la tabla dentro del modelo de
objetos. El proceso es aplicar las reglas vistas en los apartados anteriores a la inversa,
comenzandoporasociaracadatablaunaclase,cadacolumnadelatablaconunatributoen
laclase,aprovecharlasclavesajenasparadefinirlasclasesdeasociacinylosatributosde
referencia,yhacercorresponderlasclavesprimariasconatributosquepreservanlamisma
propiedad de servir de identificador de los objetos. Una posibilidad para mantener la
78
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
correspondencia jetostipoMap,
utilizados estos regacin y la
composicin.
las capacidades del RDBMS para ofrecer
distinta
2.7. Resu
e
contener la imagen
transformasegntres
formula
acidades para la actualizacin, rapidez de
acilidad de mantenimiento y continuidad. Dependiendo del caso,
quemsseajustelasnecesidadesconcretasdelcasoreal.
entreclavesprimariasyreferenciasaobjetosesemplearob
para los atributos de referencia entre clases para la ag
Es habitual que de esta forma, se concrete un modelo de objetos vaco de
funcionalidad,sinapenascomportamiento.Siemprequeseaposible,sedebenmodificarlos
esquemas de tablas existentes, para lograr un modelo de objetos con funcionalidad y
sentido en la lgica del negocio, aprovechando
svisionesdedatos,yconlaaplicacindeciertospatronesdediseo,comoelBridge
y el Proxy [13][18]. El mayor problema son los sistemas legados, en ocasiones, impiden
podermodificarelesquemadetablas,paraseradaptadoparapersistirobjetos.
men
Enestecaptulosehapresentadolastcnicasbsicasparatransformarlasclasesen
tablas, ilustrando cada caso con un ejemplo prctico. La esencia del proceso consiste en
correspondercadacadaclaseconunatablaprincipal,cadaatributoconunacolumna,cada
referencia o coleccin de referencias de las relaciones d agregacin o composicin, con
claves ajenas, tablas de asociacin, o columnas con capacidad para
serializadadeobjetos,tiposblob(binarylargeobject).Laherenciase
s:aunatablabasequecontienetodoslosatributosyunacolumnadiscriminadorde
tipo final de los objetos representados; una jerarqua de tablas paralela a la jerarqua de
herencia; o un conjunto de tablas, una por subclase terminal con los atributos propios y
heredados.
Cada alternativa ofrece diferentes cap
acceso, concurrencia y f
serescogidalafrmula
En mi humilde opinin, el proceso de transformar objetos a filas, no hay que ser
dogmtico,niforzarlasemnticaenningunodelosextremosdelatraduccindeobjetosa
filas, y aprovechar las ventajas y capacidades de cada mundo el de las clases y el de las
gestoresdebasesdedatosrelacionales.
79
Capt ul o 3
Des m
objetos Java. La
restodeltrabajo
En este
versin 1.0.1 [51
persiste
jetivos,principaleselementosysusituacinalafechadeserescritoestecaptulo.La
segund
.
icacin[51]yendoslibrosde
idntico
3.1. JDO
instanciastienenquepersistir,yespecificaloscontratosentreproveedoresdeclasesconcapacidadde
JDO.
JAVA DATA OBJ ECTS
de ayode2002hasidopropuestocomonuevoestndardepersistenciapara
especificacin Java Data Objects (JDO), que ser el foco de atencin del
,elanlisisdeJavaDataObjects.
captulo, se describe la especificacin del estndar Java Data Objects,
], con un nivel de detalle acorde al propsito de analizar este estndar de
ncia, bajo la perspectiva del marco que definen los requisitos considerados en el
primer captulo, para ello, el captulo esta organizado en dos secciones. La primera
presentadeformabreveunavisingeneraldeJDO,quepermiteconocerlaespecificacin,
susob
a seccin desgrana los detalles de la especificacin con la profundidad adecuada
para discutir su nivel de conformidad con el marco de requisitos, utiliza la ilustracin de
unapequeaaplicacincuyosobjetosdebenpersistirconJDO,yseguidamenteseexponen
los entresijos de JDO, de forma clara y concisa con el objeto de permitir discutir, ms
adelante, sobre sus cualidades y sus debilidades, sobre su congruencia con el
planteamientoelaboradomsatrsdecmoresolverlapersistencia
Elcaptuloseapoyaenlostextosdelapropiaespecif
ttulo, Java Data Objects uno de R. Roos [29] y el otro de los reconocidos C.
Russell, lider de la especificacin, y D. Jordan [16], miembro del comit experto, en este
ltimolibroseemplealamismaideadetomarunaaplicacincomovehculoqueintroduce
enelestudio,compresinyanlisisdeJDO
3
.
avistadepjaro
La especificacin Java Data Objects (JDO) es el estndar de la comunidad Java que define
lasinterfacesyclasesparamanejarlasclasesdeldominio(objetosdenegocioydeaplicacin),cuyas
perdurarsusinstancias,yelentornodeejecucinqueespartedelapropiaimplantacinde
JDO no es una propuesta para definir un OODBMS. JDO quiere ser el estndar
parainteractuarconlossistemasdegestindedatosposibilitandounavisindelosdatos
consistente y uniforme, constituida por objetos Java, con independencia del sistema de
gestindedatosdondelosdatosresidan.
JDO no es un servicio de persistencia. Es la especificacin de cmo los
programadoresvenunmodelodeserviciosdepersistenciacontransparenciadedatos.JDO
eslapartevisibledelunsistemacomplejoqueesunserviciodepersistencia.
JDO resume en unas interfaces de programacin los servicios necesarios para
alcanzar la persistencia de objetos Java sobre distintos sistemas de gestin de datos, de
forma uniforme, sin necesidad de conocer los mecanismos de persistencia realmente
3
Hacernotarqueelplanteamientodeldirectordeproyectotresaosantesdeescribirestecaptulo,era
presentarunaaplicacinsobrelaquedescribirlosdistintoselementosqueconstituyenlafuncionalidad.Azaresde
la vida han querido que la edicin del libro de David Jordan y Craig Russell, y la redaccin de estas lneas sean
contemporneas.
81
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
utilizad
rio
necesar
3.1.1.
sesencialesdelaespecificacinJDOsondos:Proporcionarsoporteala
persiste
ientodedatos,queseacapaz
egre con los servidores de
aprovechandosusservicios.
qu
temas de gestin de datos, que son empleados en el sostenimiento de los
almacen
in con los entornos de servidores de aplicaciones, definiendo los
contrato
lgicadenegocioyde
present
,laJDOSPI.Estos
sernco
3.1.2.
por las
implementac
os. Y as pues, que no sea necesario escribir cdigo de persistencia para la
infraestructuradeaccesoalosmecanismosdepersistencia.
LatransparenciadedatosdeJDO,nonecesitaalterarlosfuentesJava,perorequiere
de la definicin de la correspondencia datosobjetos y la inclusin del cdigo bina
ioenlasclasescuyosobjetossernpersistentes.
JDO propone elusode lameta informacin necesaria enficherosXML, separados
del cdigo, y la posibilidad del usoun procesador (postprocesador) de clases compiladas,
para alcanzar un buen nivel de persistencia ortogonal asegurando la transparencia de
datos.
ObjetivosFundamentales
Losobjetivo
ncia de objetos Java, que representan objetos de negocio y datos de aplicacin,
ofreciendo a los programadores una perspectiva centrada en Java de la informacin
persistente,deformatransparenteeindependientedelsistemagestordedatos.Yfacilitar
larealizacindeimplementacionesdeaccesoalossistemasdegestindedatosquepuedan
ser integradas en los servidores de aplicaciones de empresa Java [51] [16] [29]. Dicho de
otra forma, Persistencia Java Transparente, Neutral, Escalable e Integrable, persistencia
transparenteneutralrespectoaltipodesistemadealmacenam
de procesar cargas de trabajo importantes y que se int
aplicacionesJava
JDO iere ofrecer una solucin al problema de la persistencia Java, que presenta
unanicavisindelosdatospersistentes,consistenteconelmodelodeobjetosJava,donde
no es necesario conocer cada uno de los lenguajes de acceso a datos, impuestos por los
diferentes sis
esdedatos.LoscomponentesdeaplicacinconJDOpercibenunavisinJavade
losdatosorganizadosenclasesconrelacionesycoleccionesdeconstruccionesnativasJava,
un modelo de informacin que es un modelo de objetos Java. Adicionalmente JDO
considera, la integrac
s entre el servidor de aplicaciones y la implantacin de JDO, para facilitar un uso
transparente de los mecanismos ofrecidos por los servidores de aplicaciones como son, la
distribucinycoordinacindetransacciones,laseguridad,ylagestindelaconexin.De
estaformalosprogramadorescentranelesfuerzodedesarrolloenla
acin,despreocupadosporlascuestionesdeconectividadyaccesoalossistemasde
datosconcretos.
JDO definedos tipos de interfacesagrupados en sendos paquetes: una interfazde
programacinaplicaciones(API)dirigidoalosprogramadoresdeaplicaciones,laJDOAPI,
yotro,paralosfabricantesdecontenedoresdedatoseimplementaciones
mentadosenlasseccionesposteriores.
Entornosdeejecucinobjetivo
Dos son los entornos de ejecucin que deben ser soportados
ionesdeJDO:
Entornos no administrados, entornos locales o de arquitectura en dos
capas.Estemododeejecucintratalapersistenciatransparente,ocultando
a los componentes de aplicacin las cuestiones especficas para localizar,
obtener y guardar objetos con un servicio de informacin de empresa
82
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
la
problem
sejecutadasenelordenadorde
escritoriooeltelfonomvilJava,aplicacionesdeconsolayapplet,quepresentandatosde
l mbito de la aplicacin y de los datos concierne al sistema
in,conindependenciadelosdatosseanlocalesalsistemade
ejecucinoremotosenlosalmacenesdedatosdeempresa.Estaformadetrabajarrequiere
que la
este entorno se
brindan distintos modelos de aplicacin, que segn que alternativa sea escogida, la
automticagestionadaporelservidordeaplicaciones
P) o mediante la interfaz javax.jdo.PersistenceManager,
adems
licaciones es ms compleja
deentenderyutilizar,peropreparalaaplicacinanteelaumentooescaladadelacargaa
acometer. Es un modo de operar cada vez ms usado por los servicios Web que se
desplieganconelconcursodeservidoresdeaplicacionesJ2EE.
3.1.3. Capacidaddelasclasesparapersistir.ProcesadordecdigoJava
Las clases cuyas instancias pueden ser persistentes, deben incorporar el cdigo
necesario para hacer efectiva la magia de la persistencia transparente, esto supone, o bien
queelprogramadoraadeelcdigoprecisoparamaterializarlacapacidaddepersistir,oes
utilizada una herramientaqueample, extienda el cdigo originalfuente o compilado con
las modificaciones precisas, evitando al programador este importante esfuerzo. La
especificacin JDO propone la figura del procesador de clases en cdigo ejecutable java,
Enhancer, que es un programa que modifica los archivos compilados de las clases,
aadiendo el cdigo ejecutable necesario para efectuar grabacin y recuperacin
transparentedelosatributosdelasinstanciaspersistentes.Deestaformadesdeelpuntode
vistadelprogramadorsoloaadeunaetapamsasuciclodedesarrollo,laextensindelas
clasespersistentes.
JDOpretendequelamayoradelasclasesescritasporlosprogramadorespuedan
ser persistentes, que los objetos pertenecientes a clases concretas definidas por el
programador puedan perdurar su estado, con la nica limitacin de que el estado
persistente de las instancias a perdurar, este compuesto por los atributos persistentes que
sean independientes del contexto de ejecucin: tipos primitivos, tipos de referencia e
interfazyalgunasclasesdelsiste te,).
concreto(EIS).LasaplicacionesinteraccionanconunavisinJavanativade
clases que representan los datos de los servicios de EIS (bases de datos,
sistemasCRM,ERP,...).
Entornos administrados, usados en servidores de aplicaciones o
arquitecturas de tres o ms capas. Las aplicaciones dirigidas a estos
entornos adems de la persistencia transparente, disponen de la
transparenciadelosserviciosofrecidosalasaplicaciones,porlossistemas
de servidor de aplicaciones Java, servicios relativos a transacciones,
seguridad,conexiones,etc.EstemodoutilizalaarquitecturaJ2EEConector.
El resultado en ambos casos pretende ser que las aplicaciones consigan ignorar
ticadelaconectividadconunEISespecficoyunmarcodedesarrollosencillode
usar.
Elentornodedoscapasestpicodelasaplicacione
archivos y bases de datos, e
dondeesejecutadalaaplicac
aplicacin conozca, para lograr la persistencia, de objetos los interfaces
javax.jdo.PersistenceManageryjavax.jdo.spi.PersistenceCapable.
El entorno de servidores de aplicaciones al que JDO esta adaptada, es Enterprise
Java Beans (EJB) utilizando para ello la arquitectura J2EE Conector. En
aplicacindispondrdepersistencia
(Container Manager Persistente, CM
de disponer de los servicios de transaccin, seguridad y conexin ofrecidos por
todo servidor de aplicaciones J2EE. Esta forma de construir ap
maquemodelanestado(Array,Da
83
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
de
cdigo
o el depsito de datos es una base de datos relacional u otro EIS no
basadoenobjetos.LaespecificacinJDOnoestablececmoelmapeoobjetodatosdebeser
realizado. Es una cuestin abierta al planteamiento que adopte, quien proporciona la
implementacin para acceder a un sistema gesto de datos concreto. La nueva versin de
JDOendesarrolloespecificare ssistemasdebasesde
srelacionales.
dodiseadaparaquefabricantesdesistemasgestoresdedatos,sistemas
s beneficiarios de su aceptacin. Los
,...) que implementen las interfaces
n un acceso de datos estandarizado que podra ser usado por cualquier
e use JDO. Los componentes de aplicacin diseados para
aptarseparaaccederacadasistemadedatos,podrnacceder
oslossistemasqueimplementenlaespecificacinJDO.
3.1.4.
ar desde el 25 de Marzo de 2002 habiendo seguido la
estandarizacin abierta del programa de Java Community
l status de estndar por 10 votos a favor sobre 12 y
presasquevotaronafavorfueronSunMicrosystems,IBM,HP,
etworks, CISCO, Fujitsu BEA, Macromedia y Oracle. Apache y
es antes de ser consideradas completas, deben demostrar
prctica, mediante una implementacin de referencia y unas bateras
uebasdeconformidad,quesondisponibleslibrementeen[51].
Habiendo sido adoptado como estndar, el proceso de revisin para alcanzar y
gunosdelasempresasdemayor
os y servicios de aplicacin, han
aldo al estndar, caso de Sysbase, Informix, Versant, Poet (hoy
SAP,IONA,SoftwareAG,Rational,Oracle,Ericsson.
Elpasadoao2003hemosasistidoalcrecimientodelnmerodeparticipesenesta
es el portal ww.jdocentral.com, con ms de
documentacin,noticias,forosde
cenadeproductoscomerciales(Genei,Solarmetric,
isphere,)ydecdigoabierto,(YakartaOJB,XORM,JPOX,TJDO,Speedo).
El21deagostodel2003,cincodelosfabricantesdeimplementacionescomerciales
rtos ms reconocidos de JDO, entre otros
de las compaas Oracle y SAP,
JDO a la versin 2.0. Esta
erdaderopuntodeiniciodesdeelquesehapromovidola
La frmula consignada para indicar qu clases y atributos de stas sern
persistentes, es utilizar un fichero de configuracin XML, el descriptor de persistencia,
cuya meta informacin es usada para, el pre o post procesamiento con el procesador
yentiempodeejecucinparalograrlapersistenciadelosestadosdelosobjetos.
Adems de introducir la funcionalidad, para que las instancias de las clases con
capacidad de persistir puedan perdurar en los sistemas gestores de datos, es necesario,
establecerlacorrespondenciaentrelosobjetosysuestadopersistente,proyectarlosobjetos
como datos, cuand
r
lmapeoentreobjetosydatosparalo
dato
JDOhasi
de acceso a datos y desarrolladores Java sean lo
es de EIS (bases de datos, sistemas CRM, ERP fabricant
de JDO, ofrecera
componente de aplicaciones qu
usarJDO,notendranquead
atod
Estadoactual
JDO es un estnd
formalizacin del proceso de
ocess2.1. Pr
La especificacin alcanz e
ningunoencontra.Lasem
q, Apple, Nokia N Compa
Calderanovotaron.
Todas las especificacion
que funcionan en la
depr
resolvernuevosrequisitosyasehainiciadoenel2003.Al
cia en el panorama de la sistemas gestores de dat relevan
anunciado su apoyo y resp
partedeVersant),
nueva tecnologa, cuyo punto de encuentro
15.000miembrosactivos.Esteportalpodemosencontrar
discusinyalmenosdisponibleunado
Hem
de JDO de ms xito, algunos pocos de los expe
eadores, gente del cdigo abierto, y representantes sus cr
mantuvieron un encuentro para discutir sobre la evolucin de
reuninnooficialconstituyeelv
84
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
16DiagramadeClasesdelBanco Figura
85
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
unasecuenciadeoperacionesparacrearuncliente,una
actualicenlasinstanciasdeCuenta,comofuevistoenel
asdeestasclasesdebenperdurar,serpersistentes.
java correspondientes al modelo de objetos de la figura anterior,
iones sobre instancias de las clases Cliente, Cuenta y
texto fuente de estas clases y que cambios implica JDO. Como
los ha sido utilizada la implementacin de referencia de
class Cl i ent e
Ser i al i zabl e
;
t val ue of t he NI F pr oper t y
I F( )
urn ni f ;
NI F pr oper t y
car t er a pr oper t y.
val ue of t he car t er a pr oper t y
Laaplicacinvaaefectuar
cuentayalgunosmovimientosque
primercaptulo,peroaqulasinstanci
Las clases
codifican las relaciones y las operac
Movimiento. Veamos el
plataforma para probar los ejemp
JDO(JDORI)[16].
Listado14ClasesClienteyCuentaoriginal
/ **
* Cl i ent e
* Ver si on 0. 2
* Mar zo 2002
* Copyr i ght J uan Mar mol Tr abaj o f i n de car r er a
*/
package banco;
import j ava. i o. Ser i al i zabl e;
import j ava. ut i l . HashSet ;
import j ava. ut i l . I t er at or ;
/ **
* Cl i ent e del banco
* @aut hor j uan mar mol
* @ver si on 0. 2
* @si nce Mar zo 2002
*/
public
implements
{
/ **
nt e * I dent i f i caci n del cl i e
*/
protected St r i ng ni f ;
/ **
* @l i nk aggr egat i on
/ *
protected HashSet car t er a
public Cl i ent e( )
{
}
/ **
* Access met hod f or t he NI F pr oper t y.
* @r et ur n t he cur r en
*/
ic St r i ng get N publ
{
ret
}
/ **
* Set s t he val ue of t he NI F pr oper t y.
e of t he * @par amunNI F t he new val u
*/
public void set NI F( St r i ng unNI F)
{
ni f = unNI F;
}
/ **
t he * Access met hod f or
*
r ent * @r et ur n t he cur
*/
public HashSet get Car t er a( )
Nohaymtodosdeaccesoadatosenellenguaje
delsistemadondepersistenlasinstancias
No hay que importar mdulos de jdo,
en las clases persistentes. Solo en las
que las manejan las operaciones dela
APIJDO.
ElestadopersistenteJDOdeunainstanciaesta
alor de sus campos. El valor
e depender de de
otos ligados a la
e
definido por el v
de los campos no pued
objetos inaccesibles o rem
jecucinnicadelprograma.
86
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
l del cl i ent e
r mat o l egal
l apunt e de aper t ur a
i t o segun l a cl asi f i caci n de r i esgo del
c void
e
)
t NI F( ni f ) ;
a( ccc) ;
e( ) ;
;
o de cuent a anot ando l os det al l es de l a oper aci n
par amcant i dad i mpor t e del car go > 0
n ot r o caso
e cant i dad, St r i ng mot i vo, Dat e f echaVal or )
r edi t o) ) {
vo, f echaVal or ) ;
t i dad;
;
ono
abono
abono
par amval or f echa val or
ar go, f al se en ot r o caso
val or )
return false;
* @suppl i er Car di nal i t y 1. . *
* @cl i ent Car di nal i t y 1. . *
*/
tected pro HashSet t i t ul ar es;
lic Cuent a( ) pub
{
codi gocuent a = new St r i ng( ) ;
sal do = 0;
l i mi t eCr edi t o = 0;
t i t ul ar es = new HashSet ( ) ;
new apunt es = HashSet ( ) ;
}
/ **
* Asi gna l os dat os par a una nueva cuent a
* @par amni f Numer o de I dent i f i caci on Fi sca
* @par amccc Codi go Cuent a Cl i ent e Asi gnado segun f o
* @par amapor t aci on I mpor t e en EU de l a apor t aci n de
* @par aml i mcr edi t o Li mi t e de Cr ed
cl i ent e
*/
publi aper t ur aCuent aNuevoCl i ent e( St r i ng ni f , St r i ng ccc,
doubl apor t aci on,
double l i mcr edi t o
{
synchronized ( this) {
l i ent e = new Cl i ent e( ) ; Cl i ent e nuevoc
nuevocl i ent e. se
set Codi gocuent
set Li mi t eCr edi t o( l i mcr edi t o) ;
Cal endar al manaque = Cal endar . get I nst anc
Dat e f echa = al manaque. get Ti me( )
abono( apor t aci on, " Apunt e Aper t ur a" , f echa) ;
t i t ul ar es. add( nuevocl i ent e) ;
this nuevocl i ent e. get Car t er a( ) . add( ) ;
}
}
/ **
* Decr ement a el sal d
* @
* @par ammot i vo de car go
* @par amf echaVal or del car go
, f al se e * @r et ur n t r ue si f ue r eal i zado el car go
*/
public boolean car go( doubl
{
synchronized ( this) {
double sl d = sal do;
sl d - = cant i dad;
( - sl d > l i mi t eC if ( ( sl d >= sal do) | |
return false;
}
ent o( - cant i dad, mot i anot aMovi mi
o = sl d; sal d
debe += can
return true
}
}
/ **
* Abono en cuent a.
* Se aade el movi mi ent o de ab
mcant i dad i mpor t e del * @par a
* @par ammot i vo del
* @
* @r et ur n t r ue si f ue r eal i zado el c
*/
public boolean abono( double cant i dad, St r i ng mot i vo, Dat e
{
synchronized ( this) {
double sl d = sal do;
sl d += cant i dad;
if ( sl d <= sal do) {
}
Jdo exige que exista un
constructorsinargumentos.
Las operaciones son nativas Java.
Nocambialasemnticaportrabajar
con instancias persistentes o
transitorias.Lalgicadelnegocioes
puroJava.
Loscambiossobrelasinstancias
persistentessontraslados
camentealconsolidarlos
cambiosdentrodeunatransaccin.
automti
88
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
a
if
}
Cal endar
Dat e f ecv = cal . get Ti me( ) ;
HashSet a
set Apunt es( a i ent os ser an r ecol ect ados
if ( haber >
anot aMo
}
if ( debe < 0
anot aMovi mi ent o( debe, , f ecv) ;
}
}
}
/ **
* Anot aci on de
* @par ami mpor t e I mpor t e en EU del asi ent o
asi ent o
*/
. i
t FechaOper aci on( f op) ;
apunt es. add( mov) ;
}
publi
cuent a
cuent a)
not aMovi mi ent o( cant i dad, mot i vo, val or ) ;
sal do = sl d;
haber += cant i dad;
return true;
}
}
/ **
* Anot ar movi mi ent o en l a cuent a
*/
public void r ef undi r Movi mi ent os( )
{
synchronized ( this) {
( get Apunt es( ) . si ze( ) < 2) {
return;
cal = Cal endar . get I nst ance( ) ;
punt esRef undi dos = new HashSet ( ) ;
punt esRef undi dos) ; / / l os movi m
0) {
Una limitacin prctica es no e
estados de forma transaparente de
liminar los
la BD, ni
satisfacer la integridad las referencias
mecanismos que deben
las funciones
llamada (callbacks) para algunos
afectadas. JDO facilita
ser incorporados al modelo,
retorno de
eventosdelapersistencia.
vi mi ent o( haber , " Fusi on oper aci ones abonos" , f ecv) ;
) {
" Fusi on oper aci ones car go"
nuevos movi mi ent os a l a cuent a
* @par ammot i vo Descr i pci n mot i vo del
* @par amf ecVal or Fecha de val or aci n del apunt e
protected void anot aMovi mi ent o( double i mpor t e, St r i ng mot i vo,
Dat e f ecVal or )
{
synchronized ( this) {
Movi mi ent o mov = new Movi mi ent o( ) ;
mov. set I mpor t e( i mpor t e) ;
mov. set Mot i vo( mot i vo) ;
mov. set FechaVal or aci on( f ecVal or ) ;
Cal endar cal = Cal endar . get I nst ance( ) ;
Dat e f op = cal get T me( ) ;
mov. se
}
/ **
* Access met hod f or t he codi gocuent a pr oper t y.
* @r et ur n t he cur r ent val ue of t he codi gocuent a pr oper t y
*/
c St r i ng get Codi gocuent a( )
{
return codi gocuent a;
}
/ **
* Set s t he val ue of t he codi gocuent a pr oper t y.
* @par amunCodi gocuent a de l a
*/
public void set Cod nt a( St r i gocue i ng unCodi go
{
codi gocuent a = unCodi gocuent a;
}
/ **
* Access met hod f or t he sal do pr oper t y.
* @r et ur n t he cur r ent val ue of t he sal do pr oper t y
*/
public double get Sal do( )
{
return sal do;
}
/ **
* Set s t he val ue of t he sal do pr oper t y.
89
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
no fuerza cambios
tentes,imponeciertas
obligacin importante es asegurar la integridad
sobrelos
aadir
os
utos y las
lascondiciones
ar el cdigo compilado de las clases persistentes y de las que
nlapersistenciadelasprimeras.
os
Veamos nosocupa.
3.2.1.1.
EnunficheroXMLseindicaquclasesyquatributosdeestassonpersistentes,en
persistencia, cuales son los modelos de
entreobjetosydatos.Enelejemplodel
objetos, que no requiere expresar la
cheros
sistentedeunaclase,estrepresentadoporlosvalores
dependientes de
esentanentidadesdeejecucinJava,porquesinoal
muestra el descriptor de persistencia, que
/ j ava. sun. com/ dt d/ j do_1_0. dt d" >
>
=" Cuent a" >
<field name=" t i t ul ar es" >
<
=" codi gocuent a" >
</field>
<field name=" haber " >
A cd la vista del igo Java anterior, se comprueba como JDO
significativosenlasclasesdeldominio,cuyasinstanciassernpersis
bligaciones. Una limitaciones y o
referencial,anteseliminarunainstanciapersistente,nohayrecoleccindebasuras
estados almacenados, salvo que el sistema gestor anfitrin lo ofrezca, esto implica
un cdigo extra en las clases del modelo. No son definidos nuevos mtodos o atribut
porque las persistentes, el cdigo para acceder y manipular los atrib clases sean
relacionesdelasclasesnosufrealteraciones.
Cmohacerqueunaclaseseapersistenteyquesusobjetosperduren?
1. IndicarqueserpersistenteenunarchivoXML.
2. Establecerlosparmetrosdeconfiguracinquedefinen
deejecucindelapersistencia.
3. Pro
maneja
ces
4. Finalmente, es posible operar con la persistencia aplicando algun
mtodosquedesencadenanlamagiadelapersistencia.
lasecuenciamscercasobreelejemploque
Declararquclasessonpersistentes
qu forma clientela y herencia se mezclan con
pleados,ycualeslacorrespondencia identidadem
banco se u un mecanismo de persistencia de tiliza
conexinentredatosyobjetos,nieltipodeidentidadautilizar,soloqueespersistenteyla
e relacin entre clases persistentes, se utiliza para gestionar la persistencia la plataforma d
referencia de (RI), cuyo mecanismo de persistencia es un sistema de fi JDO
indexados.
Ladefinicindelestadoper
de los atributos escogidos para persistir. Estos valores no pueden ser
osoquerepr objetosinaccesibles,remot
recuperarelobjeto,lasdependenciasnopodranserreconstruidas.
En el ejemplo, el siguiente listado
describequeserpersistente:
<?xml ver si on=" 1. 0" encodi ng=" UTF- 8" ?>
<!DOCTYPE j do S ht t p: / YSTEM "
<jdo>
ame=" banco" <package n
<class name
<collection el ement - t ype=" Cl i ent e" / >
/field>
<field name=" apunt es" >
<collection el ement - t ype=" Movi mi ent o" / >
</field>
<field name
</field>
<field name=" l i mi t eCr edi t o" >
</field>
<field name=" sal do" >
</field>
<field name=" debe" >
91
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
e
>
</packa
</jdo>
stado15Descriptordepersistenciadelbanco
El de c
quatributosde c
sisetratadeun ser
compat
otrosobjetospersistentes.Enelejemplotodoslosatributos
renciasaobjetospersistentes.
s, basados en ejemplos utilizados en
captulo as por los fabricantes de JDO, para
expresa oprevistoenJDO,delos
tag ext datos de la
transfor tilizando XML. As
pues,se
<?xml
<!DOCT
<j do>
<pac
< e=" dat ast or e" name=" MyCl ass" >
<extension vendor e=" I " >
<
vendor - name=" j r el ay" key=" col umn" val ue=" D" >
y=" j dbc- t ype" val ue=" FLOAT" / >
</field>
</class>
<class name=" Cl i ent e" >
<field name = " car t er a" >
<coll ction el ement - t ype=" Cuent a" / >
</field
<field name = " ni f " >
</field>
</class>
<class name=" Movi mi ent o" >
</class>
ge>
Li
s riptor de persistencia establece que clases tendrn instancias persistentes,
estaspuedenpersistir,paralosatributosqueexpresanrelacionesseindi a,
acoleccinocorrespondenciaclavevalor,cuyoselementostendrnque
ibles,conlaclaseindicadaenladeclaracinelementtypeysiestoselementossern
partedelobjetooreferenciasa
sonpersistentesylascoleccionescontienenrefe
Losarchivosdescriptoresdepersistenciadebensernombradoscomo(literalmente)
package. j do, cuando contiene la descripcin del estado persistente de las clases de la
aplicacinopaquete,ocuandosolocontieneladefinicindepersistenciadeunaclasesola,
entonces,<nombr e l a cl ase>. j do.
Veamos otros ejemplos ms complicado
s siguientes, sealan las alternativas escogid
relmapeodeclasesentablas,bienseutilizaelmecanism
ension y vendor, y la otra alternativa, consiste en incluir los meta
macin de clases blas, en ficheros aparte, frecuentemente u a ta
gnelfabricanteencontraremosunaalternativa,otraoambas.
ver si on=" 1. 0" ?>
YPE j do SYSTEM " j do. dt d" >
kage name=" j do. t est . per f or mance" >
class i dent i t y- t yp
<field name=" i " >
- name=" j r el ay" key=" col umn" val u
extension vendor - name=" j r el ay" key=" j dbc- t ype" val ue=" I NTEGER" / >
</extension>
<extension vendor - name=" j r el ay" key=" j ava- t ype" val ue=" i nt " / >
</field>
<field name=" d" >
<extension
<extension vendor - name=" j r el ay" ke
</extension>
<extension vendor - name=" j r el ay" key=" j ava- t ype" val ue=" doubl e" / >
</field>
<field name=" st r i ng" >
<extension vendor - name=" j r el ay" key=" col umn" val ue=" STRI NG" >
<extension vendor - name=" j r el ay" key=" j dbc- t ype" val ue=" VARCHAR" / >
<extension vendor - name=" j r el ay" key=" si ze" val ue=" 60" / >
</extension>
<extension vendor - name=" j r el ay" key=" j ava- t ype"
val ue=" j ava. l ang. St r i ng" / >
</field>
<field name=" st r i ngs" >
<array/ >
<extension vendor - name=" j r el ay" key=" col umn" val ue=" STRI NGS" >
<extension vendor - name=" j r el ay" key=" j dbc- t ype"
val ue=" VARBI NARY" / >
92
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
>
"
n vendor - name=" j r el ay" key=" cl ass- i d- col umn"
CLASS_I D" >
val ue=" CHAR" / >
=" j r el ay" key=" j dbc- t ype" val ue=" I NTEGER" / >
>
>
CEST 2003" vendor -
unrboldeobjetosconJRELAY
fabricante sobre la misma figura, es como
=" 1. 0" encodi ng=" UTF- 8" ?>
ing>
t . per f or mance" >
ss" >
<jdbc-class-map t ype=" base" pk- col umn=" J DOI D" t abl e=" MYCLASS" / >
t ype=" ver si on- number " col umn=" J DOVERSI ON" / >
t ype=" i n- cl ass- name" col umn=" J DOCLASS" / >
c-field-map t ype=" val ue" col umn=" D" / >
al ue" col umn=" I " / >
" st r i ng" >
<jdbc-field-map t ype=" val ue" col umn=" STRI NG" / >
</field>
<field name=" st r i ngs" >
" el ement - col umn=" ELEMENT"
DOI D"
t abl e=" MYCLA_STRI NGS" /
</field>
tornodeejecucinconpersistenciaJDOrequiere,comocabradeesperar,que
ecanismo de persistencia, estn
ro adems tambin deben estar
</extension>
<extension vendor - name=" j r el ay" key=" j ava- t ype"
val ue=" j ava. l ang. St r i ng[ ] " / >
</field
<extension key=" cl ass- i d" val ue=" MyC" vendor - name=" j r el ay" / >
<extension key=" t abl e" val ue=" MYCLASS" vendor - name=" j r el ay" >
<extension vendor - name=" j r el ay" key=" i d- col umn" val ue=" I D" >
<extension vendor - name=" j r el ay" key= j dbc- t ype" val ue=" CHAR" / >
<extension vendor - name=" j r el ay" key=" si ze" val ue=" 20" / >
</extension>
<extensio
val ue="
<extension vendor - name=" j r el ay" key=" j dbc- t ype"
<extension vendor - name=" j r el ay" key=" si ze" val ue=" 3" / >
</extension>
<extension vendor - name=" j r el ay" key=" ver si on- col umn"
val ue=" VERSI ON" >
<extension vendor - name
</extension>
</extension>
</class
</package
<extension key=" ver si on" val ue=" Sun Aug 31 21: 53: 38
name=" j r el ay" / >
</ jdo>
Listado16Mapeode
La otra alternativa ofrecida por otro
sigue.
<
mapp
?xml ver si on
<
<package name=" j do. t es
<class name=" MyCl a
<jdbc-version-ind
jdbc-c < lass-ind
field name=" d" > <
<jdb
</field>
field < name=" i " >
jdbc-field-map t ype=" v <
/field < >
<field name=
<jdbc-field-map t ype=" col l ect i on
or der - col umn=" STRI NGS_ORDER" r ef - col umn. J DOI D=" J
>
</class>
</package>
Listado17MapeodeunrboldeobjetosconKODO
Alavistaest,quelacuestindelmapeotienesudificultad,porlocualseaconseja
utilizarproductosquefacilitenelmanejodelosdescriptoresdepersistencia.
3.2.1.2. Prepararelentornodetrabajo
Elen
las clases que implantan JDO y las de soporte del m
accesibles como otras libreras necesarias en ejecucin, pe
losarchivosde:
93
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
idad, normalmente en un
nismo
xin y
accesiblesdurantelaejecucin,
ortar a la implementacin de JDO la metainformacin necesaria,
ente en los
e donde
ses persistentes y su versin original, ya
como la duplicacin de instancias para su
los caminos
hastalo
3.2.1.3.
preparadas istentes, una vez
compiladasyantesdeeje r,queextiendeo
ampla
banco\ Movi mi ent o. cl ass
\ banco\ Cuent a. cl ass
\ banco\ Cl i ent e. cl ass"
ivosdeclasescompiladosdeben
utar la aplicacin. Algunos entornos JDO ofrecen la
tiempo de ejecucin, cuando las clases son cargadas en la
mquin
ctarconelsistemadegestindedatos
npersistenciasobrelosobjetosdelaaplicacin,hayquecrear
nismo de persistencia utilizado y la aplicacin en ejecucin. Este
lasoperacionespersistentes,que
una de las operaciones cuyos
r,tienequeserrealizadadentrodeunatransaccin,quegarantiza
JDO, el contexto de la conexin, la transaccin y las
encia, son manejados con un objeto de la clase
ciones del ejemplo, estn diseadas aplicando el patrn de
ocomando,queencontramosen[13]yilustradoen[19],tambinsonsimilares,alos
es que requieren de persistencia,
uso, obtienen un objeto gestor de persistencia de la clase,
Las propiedades que determinan la conectiv
ficherodetextofiguralaconfiguracindelaconexin:tipodemeca
rio, contrasea, y otras caractersticas de la cone empleado, usua
funcionamiento.
Losdescriptoresdepersistenciadebenestar
para ap
que puede figurar empotrada en el cdigo Java. Habitualm
EBINF, el correspondiente al paquet directorio METAINF, W
estnlasclases.
La versin modificada de las cla
que algunas operaciones,
transmisinporlaRed,solosonposiblesaplicaralasclasesoriginales.
En nuestro ejemplo, la variable de entorno CLASSPATH, contiene
sarchivosnecesarios.
Procesarlasclasesparalapersistencia
Una vez las clases del dominio que van a ser pers
cutarlaaplicacinesnecesarioaplicarelEnhance
lasclasesquepersistenyaquellasquemanejanlapersistencia,generandolaimagen
ejecutable de las clases dotadas de la capacidad de persistir y de manejar persistencia.
UtilizandoApacheAnt[45]latareaescomosigue.
<target name= " enhanceJ DORI 101" >
<java f or k=" yes" f ai l oner r or =" yes"
cl assname=" com. sun. j dor i . enhancer . Mai n"
cl asspat hr ef =" pr oj ect . cl ass. pat h" >
<arg l i ne=" - v - d $${enh. home}
${enh. home}\ banco\ package. j do
${dest }\
${dest }
${dest }
/ >
</java>
Listado18TareaAmplicarclasesconJDORI.
Cadavezquelasfuentesseancompiladas,losarch
ser procesados antes de ejec
modificacin de las clases en
avirtualJava.
3.2.1.4. Cone
Parapoderoperarco
un canal entre el meca
canalproporcionaelcontexto,sobreelquesonefectuadas
los datos y sus modificaciones perduren. Cada logran que
resultadosdebenperdura
la consistencia e integridad. En
persist operaciones internas con
PersistenceManager. Las opera
dise
casos de uso, o prueba, de JUnit. Todas las operacion
cuando se crea el caso de
94
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
objetospersistentesdeberemosproporcionarelespaciodonde
de sus estados. En JDORI esto consiste en abrir una conexin
losarchivosdelabasededatosalconsolidar
) ;
onnect i onCr eat e" , " t r ue" ) ;
ax. j do. opt i on. Connect i onURL" ,
Per si st enceManager , y
Per si st enceManager establece
programador.
Operaci
comn a todas las operaciones, y
ej ecut ar Oper aci on, qu
tosobjetos. sobrees
/ **
* Cr ear e i ni ci ar el
i ci a l a conexi * I n
* Asi gna l a t r ansacci on con
oper aci ones per si st ent es
*/
c AppOper ( ) publi
{
try {
p
obt ener Pr opi edadesJ DO( ) ) ;
pm= pmf . get Per si st enceManager ( ) ;
t x = pm. cur r ent Tr ansact i on( ) ;
}
catch ( Except i on ex) {
ex. pr i nt St ackTr ace
Syst em. exi t ( - 1) ;
}
}
publi c void ej ecut ar ( )
{
try {
t x. begi n( ) ;
ej ecut ar Oper ac
t
}
catch ( Except i on ex) {
ex. pr i nt St ackTr ace( Syst em. er r ) ;
if ( t x. i sAct i ve( ) ) {
t x. r ol l back( ) ;
}
}
}
protected abstract void ej ecut ar Oper
Crearbasededatos
Antesdeoperarcon
lmacenados los datos son a
conunapropiedadqueprovocalacreacinde
ransaccin. unat
public Cr ear BD( St r i ng f i chbd)
{
try {
) ; j dopr oper t i es = obt ener Pr opi edadesJ DO(
onexi on" Syst em. out . pr i nt ( " pr opi edades c
j dopr oper t i es. l i st ( Syst em. out ) ;
m. sun. j dor i . opt i on. C j dopr oper t i es. put ( " co
j dopr oper t i es. put ( " j av
Normalmente toda oper
objetos del modelo qu
acin sobre
e persisten,
debe ser realizada dentro de una
transaccin.
es un objeto transaccin que
la
en base de
t x
asume el papel de garantizar
integridad los cambios
datos
Unafactoraproporciona
gestoresdepersistencia
pmgestiona la persistencia.
Ofrece las operaciones para
hacer persistente un objeto,
conocer su status persistente
y eliminar permanentemente
unobjeto.
95
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
d) ;
r .
get Per si st enceManager Fact or y(
j dopr oper t i es) ;
Per si st enceManager pmc = pmf c. get Per si st enceManager ( ) ;
Tr ansact i on t x = pmc.
t x. begi n( ) ;
i f i caci on conexi on, excepci on en caso de er r or
pmf = J DOHel per . get Per si st enceManager Fact or y( j dopr oper t i es) ;
pm= m
t x = m
Out p S
j dop p
Syst em.
eracindelarchivodepropiedadespara
tes
s
o la clase
bclases, del patrn de inicio
nte.
al gestor de persistencia que la convierta en
tente.
/ **
t o expl i ci t ament e
er si on 0. 1
" f ost or e: . . / db/ " + f i chb
OHel pe Per si st enceManager Fact or y pmf c = J D
cur r ent Tr ansact i on( ) ;
t x. commi t ( ) ;
pmc. cl ose( ) ;
j dopr oper t i es. put ( " com. sun. j dor i . opt i on. Connect i onCr eat e" ,
" f al se" ) ;
/ / ver
p f . get Per si st enceManager ( ) ;
p . cur r ent Tr ansact i on( ) ;
ut t r eamf op = new j ava. i o. Fi l eOut put St r eam( " j do. pr oper t i es" ) ;
r o er t i es. st or e( f op, " par amet r os per si st enci a" ) ;
out . pr i nt ( " Base de dat os: " + f i chbd + " cr eada" ) ;
}
catch ( Except i on ex) {
ex. pr i nt St ackTr ace( Syst em. er r ) ;
}
Listado20CreacindelabasededatosconJDORI
Una vez creada la base de datos fijamos los valores que determinan las
caractersticas de las sucesivas conexiones sobre un archivo, este ejemplo denominado
j do. pr oper t i es. Algunas de las caractersticas de conexin, pueden ser cambiadas
durante la ejecucin para aprovechar funcionalidades como las transacciones de solo
lectura, bloqueo optimista, retener los estados al finalizar las transacciones o permitir
instancias transitorias transaccionales, cuyo estado es preservado durante una transaccin
parapoderdeshacerlasmodificaciones,silatransaccinesrechazada.
Conlacreacindelabasededatosylagen
laconexin,lafasedepreparacinestcompleta.
3.2.1.5. Operarsobrelasinstanciaspersisten
JOD permite una verdadera transparencia, consigue con instancia que operar
rias. En el ejempl persistentes no sea distinto de manejar instancias transito
eraciones definidas en su abstracta AppOper, asla a las op
ejecucinyconsolidacin,detodaoperacinpersiste
Hacerpersistentesinstancias
Fcil. Crear la instancia y pedir
persis
* Aper t ur aCuent a. j ava
* Ver si on 0. 1
* Ener o 2003
* Copyr i ght J uan Mar mol Tr abaj o f i n de car r er a
*/
package casosdeuso;
import j ava. ut i l . I t er at or ;
import banco. Cuent a;
import banco. Movi mi ent o;
/ **
* Hacer per si st ent e un obj e
aut hor J uan Mar mol * @
* @v
96
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
f i caci on Fi scal
St r i ng ni f ;
* Codi go Cuent a Cl i ent e
*/
apor t aci on;
/ **
CCARGC] ,
( ar gs[ CREARGC] ) ,
e( ar gs[ CANARGC] ) ) ;
l i ent e Asi gnado
* @par ampl m Li mi t e de Cr edi t o concedi do segun su cl asi f i caci on de
r i esgo
* @
pi mp;
ej ecut ar Oper aci on( )
{
) ;
at or ( ) ;
* @si nce Febr er o 2004
*/
public class Aper t ur aCuent a
extends AppOper
{
/ **
* o I dent i Numer
*/
vate pri
/ **
private St r i ng ccc;
/ **
* Li mi t e de Cr edi t o Concedi do
*/
private double l i mcr edi t o;
/ **
* Apor t aci on en eur os
*/
private double
* Aper t ur a de cuent a par a nuevo cl i ent e
* @par amar gs Ni f , CCC, cr edi t o, cant i dad eur os
*/
public static void mai n( St r i ng[ ] ar gs)
{
Aper t ur aCuent a nc;
if ( ar gs. l engt h < NUMARGC) {
Syst em. er r . pr i nt ( " Por f avor , NI F, CCC, cr edi t o, cant i dad" ) ;
return;
}
s[ C nc = new Aper t ur aCuent a( ar gs[ NI FARGC] , ar g
Doubl e. par seDoubl e
ubl Doubl e. par seDo
nc. ej ecut ar ( ) ;
/ **
per t ur a Cuent a Nuevo Cl i ent e * A
* @par ampni f NI F del cl i ent e
* @par ampccc Codi go Cuent a C
par ampi mp I mpor t e en eur os de l a apor t aci n i ni ci al
*/
public Aper t ur aCuent a( St r i ng pni f , St r i ng pccc, double pl m,
double pi mp)
{
super( ) ;
ni f = pni f ;
ccc = pccc;
l i mcr edi t o = pl m;
apor t aci on =
}
protected void
Cuent a cu = new Cuent a( ) ;
cu. aper t ur aCuent aNuevoCl i ent e( ni f , ccc, l i mcr edi t o, apor t aci on) ;
pm. makePer si st ent ( cu) ; / / Hecho per si st i r expl i ci t ament e
/ / l os obj et os dependi ent es son hechos per si st ent es por al cance
Syst em. out . pr i nt l n( " Aper t ur a Cuent a: "
Syst em. out . pr i nt ( cu. t oSt r i ng( ) ) ;
Laconexinylatransaccin
enlasuperclase.
El objeto es hecho
hechas
persistir
expresament,perolosobjetosdesu
cierre de persistencia tambin, sin
intervencin expresa del
programador.
I t er at or i t = cu. get Apunt es( ) . i t er
( i t . hasNext ( ) ) { while
97
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Listado21Aperturadenuevacuenta
stos pueden ser recuperados de la base de datos de
deunaclase.
iterarsobreelconjuntodetodaslas
tipo.Unaextensin,objetodeltipoExt ent ,esunafacilidadde
unaclasedotadadepersistencia,o
dos de persistencia. Una vez que una
larecuperacinestos
a memoria automticamente, esto con transparencia
de dato
nsultadas. Las tres formas de acceso
pueden
d void ej ecut ar Oper aci on( )
{ / /
ensi onCl i ent es. cl ose( i t er ) ;
et ur n St r i ng con l os dat os bsi cos
Movi mi ent o mov = ( Movi mi ent o) i t . next ( ) ;
Syst em. out . pr i nt ( mov. t oSt r i ng( ) ) ;
}
}
}
Accederalasinstancias
Hechos persistir los objetos, e
tresformas:
Recorrerlaextensin
Navegarporelmodelodeobjetospersistente.
Ejecutar una consulta sobre las instancias de una clase, su extensin, una
nstanciasdeesetipo,osobreotraconsulta. coleccinconi
Recorrerlaextensindeunaclase,consisteen
instanciasdedeterminado
JDOparaaccederalconjuntodetodaslasinstanciasde
de la clase y sus descendientes igualmente dota
instanciaesrecuperada,elaccesoasusobjetosrelacionados,provoca
es, navegar por el modelo de objetos
s. La ejecucin de una consulta, resulta en una coleccin de aquellas instancias de
ciertaclase,referenciadasenunacoleccinoporsuextensin,quesatisfacen,unpredicado
sobre los atributos y referencias de las instancias co
sercombinadasentres,unpatrnmuyhabitualenlasaplicaciones,serlocalizar
con una consulta aquella instancia que cumple cierta condicin de bsqueda, a partir de
sta navegar por su cierre de persistencia, cuyos objetos a su vez pueden ser objeto de
nuevasconsultas.Veamosunejemplodelodicho.
Coleccindelasinstanciaspersistentesdeunaclase
protecte
Recor r er l a ext ensi on de t odas l as i nst anci as per si st ent es Cl i ent e
Ext ent ext ensi onCl i ent es = pm. get Ext ent ( Cl i ent e. class, true) ;
I t er at or i t er = ext ensi onCl i ent es. i t er at or ( ) ;
while ( i t er . hasNext ( ) ) {
Cl i ent e cl i = ( Cl i ent e) i t er . next ( ) ;
Syst em. out . pr i nt ( cl i . t oSt r i ng( ) ) ;
}
ext
}
Listado22OperacinListadodeClientes
ElcdigoanteriorrecorrelacoleccindetodaslasinstanciasdelaclaseCl i ent ey
todas las subclases persistentes de Cl i ent e (porque el segundo argumento de
get Ext ent , es t r ue). Al finalizar la iteracin, los recursos asignados son liberados al
invocarelmtodoclose.Sielsistemagestordedatosasociadoproporcionaunavisinde
datosconsistente,entoncesellistadoanteriormostrarelestadodelosclientesaliniciode
latransaccin.
Navegarentreobjetosdelmodelo
/ **
* Ret or na l a cuent a como un cadena de car act er es
* @r
*/
public St r i ng t oSt r i ng( )
{
98
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
EnlaclaseCl i ent e
public void j doPr eDel et e( )
{
Cuent a cu;
Per si st enceManager pm= J DOHel per . get Per si st enceManager ( this) ;
I t er at or i t = get Car t er a( ) . i t er at or ( ) ;
while ( i t . hasNext ( ) ) {
cu = ( Cuent a) i t . next ( ) ;
cu. get Ti t ul ar es( ) . r emove( this) ;
/ *Los cl i ent es el i mi nados dej an de ser t i t ul ar es de sus cuent as*/
if ( cu. get Ti t ul ar es( ) . si ze( ) == 0 && ! J DOHel per . i sDel et ed( cu) ) {
pm. del et ePer si st ent ( cu) ;
}
}
}
formaautomticaparadeterminadoseventosdelciclodevidade
s, el programador no debera invocar los mtodos esta interfaz
Col l ect i on movs;
Consul t aCuent a consul t acuent a = new Consul t aCuent a( codi goCuent a) ;
consul t acuent a. ej ecut ar ( ) ;
cuent a = consul t acuent a. obt ener Cuent a( ) ;
if ( cuent a == null) {
Syst em. er r . pr i nt l n( codi goCuent a) ;
return;
}
movs = cuent a. get Apunt es( ) ;
cuent a. r ef undi r Movi mi ent os( ) ;
st em. out . pr i nt ( cuent a. t oSt r i ng( ) ) ;
}
Listado26EliminarInstanciasPersistentes.Refundirmovimientos.
Laeliminacindelosestadospersistentessuscitalacuestindelaintegridaddelas
referencias vista en el primer captulo. JDO permite la integridad de las
referenciasconlaimplementacindeunaint
.Enesteejemplodebancosonexpuestosdoscasos,laeliminacindeunclientey
la eliminacin de una cuenta: cuando se elimina un cliente este deja de ser titular de sus
cuentas,decuyosfondoselBancosabebienquehacer,cuandounacuentaeseliminada,los
movimientoscorrespondientestambinson
La operacin aprovecha la ca
Java de recoleccin de memoria
borrado
pacidad de
e invoca el
de los estados con
deletePersitentAll
Listado27Propagarlaeliminacindeunclientealascuentas.
Los mtodos de la interfaz I nst anceCal l backs son invocados por la
implementacinJDOde
las instancias persistente
101
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
rlavalidezdelaoperacin,
Cuent a
t os of r ece l a el i mi naci n en cascada
on J DO a ni vel del ser vi ci o o en l a apl i caci n
. si ze( ) == 0) {
nager pm= J DOHel per . get Per si st enceManager ( this) ;
t Al l ( this. apunt es) ;
t ul ar es( ) . i t er at or ( ) ;
t ( ) ) {
i ent e) i t . next ( ) ;
Del et ed( cl i ) ) {
emove( this) ;
( ) . si ze( ) == 0) {
t ent ( cl i ) ;
ciaspersistentesvinculadasalaCuenta
problemtica interesante, el soporte de las
relacin con esta cuestin, JDO no maneja las
ones entre los objetos persistentes, directamente sobre la base de datos, exige la
inado, pero los objetos persistentes
vidas independientes, no actualizan
anceCal l backs.
revisin 2.0 de JDO, resuelve esto, con la gestin
tica incluida la eliminacin de los estados persistentes, sin necesidad de
es:AgregacinyHerenciaenJDO
s persistentes Java de agregacin, referencia y herencia
relaciones entre objetos transitorios Java, si bien existen
lase,
os o
ms atrs los listados de est
en llegar a ser objetos persistentes, los
s ligados al sistema de ejecucin (clases del sistema, objetos remotos), no pueden
rficas, referencias
en ejecucin son
ointerfaz.Tambinesposibleusar
como atributos de una instancia,
ncias, sern tipos
pensable para expresar relaciones en Java, son las
pos ofrecidos
JDO, y adems, contempla otros tipos como
directamente.Elobjetivoesmantenerlaconsistencia,noproba
queesasuntoparalalgicadelnegocio.
public void l ase j doPr eDel et e( ) / / En l a c
{
/ ** Pr opagar l a el i mi
se de da
naci n a l os movi mi ent os
* O l a ba
* O bi en c
*/
f this s( ) i ( . get Ti t ul ar e
return;
}
j avax. j do. Per si st enceMa
pm. del et ePer si st en
this. get Ti I t er at or i t =
while ( i t . hasNex
Cl i ent e cl i = ( Cl
if ( ! J DOHel per . i s
cl i . get Car t er a( ) . r
if ( cl i . get Car t er a
pm. del et ePer si s
}
}
}
}
Listado28Eliminarlasinstan
El cdigo anterior muestra una
entes. En relaciones entre los objetos persist
relaci
recuperacin del objeto a eliminar para ser elim
onados por agregacin, instancias relaci de
automticamente la consistencia de sus referencias, por eso los I nst
Otros
utom
planteamientos son posibles, la
a
recuperacinydeformaautomtica.
3.2.1.6. Relacionesentreobjetospersistent
Las relaciones entre objeto
con JDO, no son distintas de las
algunasrestriccionesypautasatenerencuenta.
Las referencias Java, utilizadas para definir atributos de instancia, de c
dos, pueden estar adas a objetos transitori parmetros o variables de mto conect
persistentes indistintamente. JDO no exige la utilizacin de ciertos tipos concretos
dedicados a ser referencias de objetos persistentes,
plos de ello. Pero no todos los tipos pued
e captulo
son ejem
objeto
ser persistentes. JDO permite la utilizacin de referencias polim
radas de un clase o interfaz en una jerarqua de herencia, que decla
asignadasaunobjetosubtipodescendientedeesaclase
se Object, referencias, cuyo tipo sea una interfaz o la cla
procurando que en ejecucin los tipos concretos asignados a estas refere
permitidosporJDO.
El otro elemento indis
colecciones, JDO especifica los tipos C
iamente por toda implementacin
ollection, Set, HashSet como ti
necesar
102
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
edequesuclaseseadescendiente,
o no, de otra clase; depende de que si la clase haya sido declarada en el descriptor de
persistencia. Los atributos declarados como persistentes en una clase, son persistentes
tambinenlassubclasespersistentesdeesta.
Vemoslo con el siguiente diagrama de clases que presenta como ejemplo una
jerarqua de clases que quiere representar las condiciones y productos financieros de
crdito segn el tipo de cliente, por supuesto, seguramente otra clasificacin sera ms
apropiada,perocomoilustracinestil.
opcio
sop
lecciones son especificados en el descriptor de pe
estipodeloselementosenlascoleccionesesObject.
Los cambios producidos en los objetos persistentes son automticamente
sincronizados en sus estados almacenados, para los objetos dependientes agregados por
referencia, pero no as para los objetos contenidos como parte integrante de otro (ste
extremoseexplicaenlosdetallesdelaespecificacin,msadelante).
Cmoafectalapersistenciaalaherenciaentreclases?LapersistenciaJDOdeu
clase es independiente de su posicin en la jerarqua de herencia a la que pertenezca, que
lasinstanciasdeunaclasepuedanperdurar,nodepend
Persona Juridic
-balance:String
Profes nal io Empleado
-empleador:ClienteCredito
ClienteCredito
-riesgo:int
-productosSeguro:HashSe
-productosCredito:HashSe
-informeFinanciero:String
-limiteRiesgo:double
-deuda:float
-patrimonio:float
Persona Fisica
-nivelRetributivo:in
Profesional Colegiado
-organoColegial:Asociacione
Funcionario
#empleador:Organismo_Public
Asociaciones Empresa
-acciones:int
-empleados:int
Organismo Public
Cooperativas
-socios:int
Ayuntamiento
y
alacapacidaddecadaclasepara
ero descriptor de
packag
Figura17Diagramadeclasesdeclientesdecrdito
Partiendodelajerarquadeclasesanteriorseilustralainteraccinentreherencia
persistenciaJDOmedianteelsiguientecdigo,queverific
persistir sus instancias conforme a la declaracin hecha en el fich
persistenciaempleado.
e casosdeuso;
103
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
/ **
i ght : Copyr i ght ( c) 2004</ p>
* <p>Company: Pr oyect o Fi n de Car r er a Per si st enci a y J DO</ p>
* @ver
*/
import j ava. ut i l . I t er at or ;
import j ava. ut i l . Vect or ;
import j avax. j do. spi . Per si st enceCapabl e;
import cl i ent escr edi t o. *;
public class Pr uebaHer enci a
extends AppOper
{
private Vect or vI ns;
public Pr uebaHer enci a( )
{
vI ns = new Vect or ( ) ;
vI ns. add( Pr of esi onal . class) ;
}
instancia
con JDO, y verifica si es posible guardar una instancia. Utilizamos dos casos de ejemplo
ependencia entre la herencia y la persistencia JDO, en una
primera
osydescendientes,esdeclaradapersistentedeformaaislada.
SituacinC
}
Listado29IlustrandolarelacinentreHerenciayPersistencia
Elcdigorecorrelajerarquadeclasesmostrandoparacadaclasesiimplementala
interfaz de JDO Per si st enceCapabl e, necesaria para que pueda persistir la
que muestran el nivel de ind
situacindondeunaclaseabstracta,quenopuedetenerinstanciasconcretas,est
declarada como persistente y un descendiente indirecto necesita persistir; y en segundo
caso,unaclaseconancestr
lasePersistenteydescendientenodirecto
<<persistente>>
ClienteCredito
-riesgo:int
-productosSeguro:HashSe
-productosCredito:HashSe
-informeFinanciero:String
-limiteRiesgo:double
-deuda:float
-patrimonio:float
Persona Fisica
-nivelRetributivo:in
super-clase persistente
<<persistente>>
Empleado
-empleador:ClienteCredit
Profesional
Declaracin de persistencia en package.jdo
<class name="ClienteCredito" >
....
</class>
<class name="Empleado"
ndenciaentrepersistenciayherencia.
heredados. gestiona automticamente los atributos heredados que
no persistentes. En el ejemplo anterior el atributo
es controlado por las implementaciones de JDO. Esto puede
suceder
guraanterioraparece
Ver i f i d
I mpl emnt
Las i nst a
Ver i f i cando per si st enci a par a: cl i ent escr edi t o. Cl i ent eCr edi t o
I mpl ement a I nt er f az Per si st enceCapabl e: t r ue
Las i a
Ver i f i cand
I mpl ement a I nt er f az Per si st enceCapabl e: f al se
Las i a
persistence-capable-superclass="ClienteCredito">
<field name ="empleador" ></field>
</class>
Figura18Diagramadeclasesilustrandolaindepe
Qusentidotieneestasituacin?Lanecesidaddepersistirymanipularatributos
Actualmente, JDO no
pertenecen a clases
ni vel Ret r i but i vo, no
cuandolosatributosenlasclasesintermediasnotienenquepersistir.
Lasalidadelaejecucindelprogramaparalasclasesdelafi
comosigue:
desemforo,sealesoconstantescompartidas,
suelenser
I mpl ement a I nt er f az Per si st enceCapabl e: t r ue
e cl i ent escr edi t o. Empl eado no pueden per si st i r
Ver i f i cando per si st enci a par a: cl i ent escr edi t o. Per sona_Fi si ca
I mpl e
t escr edi t o. Cl i ent eCr edi t o no pueden per si st i r
Ver i f i cando per si st enci a par a: j ava. l ang. Obj ect
I mpl e
Figura19Diagramadeclasesilustrandolaindependenciaentreherenciaypersistencia
La situacin descrita en la anterior figura tiene sentido en aquellas situaciones
dondelassuperclasesdeunaclasepersistente,nocontieneatributosquenecesitenpersistir,
comoaquelloscalificadoscomotransitorios(transient,volatile),oconstantes(final),casode
atributosdeclasequerepresentanvariables
clasesabstractas.
LaejecucindelprogramaanteriorListado29,paraeldescriptordelaFigura19es
lasiguiente:
Ver i f i cando per si st enci a par a: cl i ent escr edi t o. Pr of esi onal
I mpl ement a I nt er f az Per si st enceCapabl e: t r ue
Las i nst anci as cl ase cl i ent escr edi t o. Pr of esi onal no pueden per si st i r
Ver i f i cando per si st enci a par a: cl i ent escr edi t o. Empl eado
Las i nst anci as cl as
ment a I nt er f az Per si st enceCapabl e: t r ue
Las i nst anci as de cl i ent escr edi t o. Per sona_Fi si ca pueden per si st i r
Ver i f i cando per si st enci a par a: cl i ent escr edi t o. Cl i ent eCr edi t o
I mpl ement a I nt er f az Per si st enceCapabl e: f al se
Las i nst anci as cl ase cl i en
ment a I nt er f az Per si st enceCapabl e: f al se
Las i nst anci as cl ase j ava. l ang. Obj ect no pueden per si st i r
106
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
3.2.2.
aoperarelmodelo.
de reglas que rigen la interaccin entre los
elementosd m
Alg delodepersistenciadeJDO,proceden
del modelo persistencia para Java del ODMG, frente al que
JDO muest su l ODMG es la
transparencia e
Lapersistenciatransparente.
here
Laproposici anciasdentrodelmodelo.
ide
una clase control, gestor de persistencia,
3.2.2.1. rea e
Los e
lasclasesconla
3.2.2.2. Transpar
Lat
i dascomosiestuvieran
objetosprovocaquelos
estado almacenado, como si
Laa dearchivos,),del
que se
consolida.
n automtica entre los tipos de datos nativos de los sistemas de
Lailustracindelasdossituacionesvistas,muestraneltratamientodelaherencia
en JDO. Todava hay otras situaciones que considerar, cuando es utilizado el modelo de
identidad gestionado por la aplicacin (identidad de aplicacin), que exige seguir ciertas
pautas[51],peronosondeintersparaelenfoquedeesteapartado,msadelante,algunos
puntossobrelacuestinsontratadosalrevisarelcontenidodelaespecificacin.
Modelodepersistencia
JDOhasidodiseadaenbaseunmodelodepersistencia,quecomocualquierotro,
quedacaracterizadopor:
Unosfundamentosquedansoportealmodelo.
Unaseriededefinicionesdelosconceptosyelementosdescritosenelmodelo.
Una serie de reglas, que determinan la funcionalidad del modelo, constituyen
lasrestricciones,losrequisitosylaform
Un modelo de persistencia es una representacin que describe los conceptos,
elementos (tipos y objetos) y el conjunto
el odelo.
unosdelosnotablesfundamentosdelmo
de impulsado por el estndar
ra stanciales diferencias. La principal aportacin asumida de
d datos.Losconceptosesencialesenlosquelaespecificacinsesustenta,son:
La definicin de instancias JDO, sus categoras y restricciones de tipo y
ncia.
ndelciclodevidadelasinst
La ageneracinautomticadecdigo.
La persistencia dirigida por
PersistenceManager.
d inters
objetos que inter san a JDO pesistir son los objetos de las clases del dominio,
lgicadelnegocio,definidasporlosprogramadores.
encia
ransparencia,serefierea:
La lusindequelasinstanciaspersistentessonmaneja
siempredisponiblesenmemoria.Lanavegacinentre
objetos visitados sean recuperados, a partir del
nuncahubieransidodestruidosdelamemoria.
ctualizacinimplcitaenlosEIS(basededatos,sistema
estado correspondiente a cada instancia modificadaen una transaccin
La conversi
datos,dondeelestadodeloobjetosesguardado,ylostiposJavausadospara
losatributosdelosobjetospersistentes.
107
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
3
tan aspectos ligados al entorno de ejecucin, a los
elem t
cuyo es
definida
tienese stir.
o
JDO, so instancia JDO,
con u
el servic
de pers
de pers
modific e cu st
defecto, s de los tipos soportados para persistir, salvo los
sient, static y final, podrn formar estados persistentes. Todos los
modific
JDO clasifica los objetos persistentes en dos categoras en funcin como son
almacenados,sicomoobjetosindependientesdirectamenteaccesibles,ointegradosdentro
del estado almacenado de otro. Esto determina la necesidad de poseer identidad propia
paraserreferenciadoporotrosobjetos,oprescindirdeidentidadporserparteincluidade
un objeto. Esto es similar a lo que sucede en lenguajes orientados a objetos como Eiffel o
C++,conlasemnticaporreferenciaovalor.
Los objetos con identidad propia, son los objetos de primera categora. Los objetos
contenidos(embebidos)enotros,quenoprecisanteneridentidadpropia,sonlosobjetosde
segunda categora. Para que un objeto pueda ser de primera categora, su clase deber
implantar la interfaz PersistenceCapable y se deber incluir las declaraciones
oportunaseneldescriptordepersistencia.
La pertenencia a una de estas categoras afecta a la funcionalidad de compartir,
integridad y transparencia. Para los objetos de primera clase, la implementacin de JDO
debe asegurar la singularidad, que recuperado el objeto a cach slo habr una instancia
que lo represente, el seguimiento de las actualizaciones y su sincronizacin con el estado
almacenado. Los objetos de segunda categora no son compartidos entre distintos objetos,
noseasegurasusingularidadydebengestionarsusactualizacionesnotificandoasuobjeto
contenedor de primera clase. En el caso particular de los Arrays, la pecificacin
contemplacomoopcional
3.2.2.5.
virtual Java. Relaciona unvocamente identificador java interno,
ntificador empleado por el mecanismo de persistencia para localizar los estados
doscorrespondientes.
cia persistente de primera categora tendr un identificador de objeto
JDOqu
3.2.2. . InstanciasJDO
El modelo empleado por JDO limita las clases cuyas instancias pueden ser
persistentes. Las clases que represen
en os de procesamiento y procesos, no pueden ser persistentes, ni tampoco aquellas
tado dependa de objetos con estado inaccesible o remoto. Instancias de las clases
s en los paquetes como java.lang, java.net, java.io no podrn ser persistentes, no
ntidorecuperarobjetosligadosauncontextodeejecucinquedejodeexi
Las instancias correspondientes a bjetos que sern persistentes y manejados con
n denominadas instancias JDO. El estado persistente de una
stit idoporlosatributoscuyostipospuedanydebanserpersistentes,esgestionadopor
io de persistencia que implementa la especificacin JDO. Mediante un descriptor
istencia escrito en XML escrito por el programador o quien administre el esquema
istencia, se indica al Enhancer, que atributos sern tenidos en cuenta, en la
acin del cdigo compilado Java de las clas s yas in ancias persistirn. Por
todos los atributos declarado
calificados como tran
adoresJavasonsoportadosporJDO.
3.2.2.4. Objetosdeprimeraclaseydesegunda
es
lagestinautomticadelasactualizaciones.
IdentidadJDO
EnJDOlaidentidaddeunobjetopersistente,esdistintadelaidentificacininterna
del objeto en la mquina
con el ide
almacena
Cada instan
epermitesulocalizacin,asegurarsusingularidadylograrlasincronizacinentre
estado almacenado y las modificaciones consolidadas de la instancia, esto es, cada objeto
persistentetieneunaidentidadJDO.
108
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Figura20DiagramadeestadosdelciclodevidadeinstanciaJDO
JD establecediezestadosdeloscuales,sietesonobligatorios,correspondientesa
lidad especifica
O
la funciona da, y tres pertenecientes a funcionalidades opcionales. Veamos
losesta
Estados
instancias parten de este estado. Tambin, alcanzan el estado Transitorio, todas las
dos obligatorios.
Transitorio
Todas las instancias son creadas inicialmente como transitorias, tanto aquellas
cuyas clases sean persistentes como las que no. Su comportamiento es el propio de una
instancia no persistente. El servicio de soporte de persistencia no interviene. Las nuevas
110
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
tente
este estado todas las instancias transitorias convertidas en persistentes
durante
n
de persistencia, etc. La modificacin del valor de un atributo provoca la
transicinalestadoPersistenteAlterado.Laconsolidacindelatransicinencursoprovoca
istente del objeto en el sistema de datos asociado, y alcanzar el
estadoVaco.LaeliminacinllevaalestadodeNuevoPersistenteEliminado.
Vaco
Este estado es para las instancias JDO que representan objetos almacenados con
identidad ya determinada pero, cuyos atributos no estn asignados o sincronizados con
estasinstanciasquelosrepresentan,soninstanciasJDOvacas.Elestadovacosatisfacela
singularidad de las instancias entre transacciones, mantiene la identidad JDO y la
asociacinconlainstanciaPer si st enceManager correspondiente.Esteestadopuedeser
no visible para las aplicaciones porque es necesario a nivel de la implementacin JDO. La
modificacindeunatributoprovocalatransicinalestadoPersistenteAlterado.Elaccesoal
valor de los atributos con su consiguiente recuperacin activa la transicin a Persistente
Completo.
PersistenteCompleto
EsteeselestadodelasinstanciasJDOcuyosatributoshansidorecuperadosporla
implementacinJDOyquenohansidomodificadosenlatransaccinencurso.Cuandoel
valordeunatributoesaccedido,siesnecesariosuvaloresobtenidodelsistemadedatos
asociado por el servicio de persistencia JDO. La modificacin de un atributo provoca la
transicin al estado de Persistente Alterado. La eliminacin de la instancia fuerza la
transicinalestadodePersistenteEliminado.Laconsolidacin,revocacindelatransaccin
encursoprovocalatransicinalestadoVaco,conlaactualizacinadecuadaenelsistema
de datos. El descarte intencionado del cach de una instancia JDO, mtodo evict(obj)
(vaciar),conducealestadoVaco.
PersistenteAlterado
CuandounainstanciaJDOesmodificadaylamodificacinnohasidoconsolidada
sobreelsistemadedatos,estaalcanzaelestadodePersistenteAlterado.Laconsolidac no
revocacin de las modificaciones n al estado de Vaco. La
nteEliminado.Elrefrescodelosatributosconlosdatos
actuales
instancias que dejan de ser persistentes, por eliminacin consistente de los datos
almacenadosoporinvocacindelmtodomakeTr ansi ent ( obj ) . Unainstanciacambia
alestadoNuevoPersistentealsucedereleventohazPersistente,estoes,cuandoesinvocadoel
mtodo makePer si st ent ( obj ) explcitamente o por aplicacin de la persistencia por
alcance,cuandounainstanciapersistentesealmacena,lasinstanciasreferenciadaspasana
sertambinpersistentes.
NuevoPersis
Alcanzan
la transaccin encurso. Lasinstancias en este estado pasan a estar bajo el control
deserviciodepersistenciaJDO.Latransicinaesteestadoprovocaquelasinstanciaspasen
asermanejadasporobjetosdelaclasePer si t enceManager quecontrolarnlasrestantes
transicionesdelciclodevidayaccionesrelativasalapersistencia:asig acindeidentidad
JDO, satisfaccin de la singularidad, respaldo de los valores de los atributos para su
revocacin, coordinacin de la participacin por otras instancias, sincronizacin con los
mecanismos
el almacenamiento cons
i
efectuadas, cambia la situaci
eliminacinllevaalestadodePersiste
enlatransaccinencurso,conllevaconseguirelestadodePersistenteCompleto.
111
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
JD i e a d
deconsultadelosgestoresdatosaccedidos.
rmes, esto es, iterar y procesar un elevado
Nuevopersistenteeliminado
CuandounainstanciaJDO,elestadoNuevoePersistente,eseliminadaexpresamente
pasaasteestadoprovisional,entantosedecideconsolidarorechazarlaeliminacin,que
provoca la eliminacin del estado almacenado, dado el caso. Terminada la transaccin la
instanciaparaasertransitoria,alestadosTransitorio.
PersistenteAlterado
Una instancia en estado Persistente Completo, recuperada del mecanismo de
persistencia, es marcada con el mtodo del et ePer si st e
pasaaesteestadotemporal,mientras
lainstanciapasaalestadodeVaco,loquesignificaquequizstengaquevolver
a ser refrescada desde el sistema de datos correspondiente. Si se consolida la transaccin,
entonces,lainstanciapasaasertransitoria,alcanzaelestadoTransitorio.
Como podemos ver el ciclo de vida descrito recoge todas las situaciones posibles
relativasalapersistenciadeunainstanciaysusefectos.
LenguajedeConsultas
JDOQL,JavaData
los mecanismos de pers
ones de la consulta, todo expresado con una sintaxis Java, que no obliga a conocer
otro lenguaje sintcticamente distinto. En los apartados anteriores se ilustrado con
ejemplos, como trabajar con JDOQL. Aclararemos en este apartado, algunos aspectos no
vistos de JD QL. Sabemo que el resultado las consul s siempre s un coleccin, la
coleccin es inmutable de las instancias seleccionadas. La clase PersistenceManager
acta como factora de instancias de Query cuya clase debe ser proporcionada por la
implementaci nJDO.Lasconsultas OQL,sonmanejadasmed ant un interfaz eJDO,
la interfaz Quer y El diseo de JDOQL y de la interfaz que manipula las consultas, tienen
presentelossiguientesobjetivos:
La neutralidad del lenguaje, independencia del lenguaje frente a los
mecanismosdondepersistenlasinstancias.
Disponerdelacapacidadparalaoptimizacindelasconsultas.
Contemplar dos modos de procesamiento de consultas, procesamiento en
memoriaodelegadoalossistemas
Soportar conjuntos resultado eno
nmerodeinstanciasconunlimitadousodelosrecursosdelsistema.
Elusodeconsultascompiladas,evitandorepetirelprocesodepreparacinde
lasconsultas.
El anidamiento de las consultas. El resultado de una consulta puede ser el
objetosobreelquevolverarefinarunaconsulta.
Tressonloselementosbsicosrequeridosparapoderllevaracabounaconsultaa
travsdelosobjetosdelainterfazQueryson:Laclasedelasinstanciasquesonconsultadas
(clase candidata), el tipo de la coleccin resultado, bien java.util.Collection o Extent; y el
filtro de consulta, una expresin booleana Java que concreta el criterio de seleccin. Los
filtros no pueden incluir la invocacin de los mtodos de los objetos consultados. Los
112
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
uedadeparmetrosyvariablesqueforman
El empleo de variables es tema de debate respecto de la
JDOafirmanclarificarenlaprximaespecificacindeJDO.
3.2.4.
3.2.5.
atributos de la clase candidata del tipo coleccin pueden ser incluidos en los filtros para
verificarsiestnvacosoincluyenun ciertoelementoligadoaunavariable.Lascadenasde
caracteres pueden ser procesadas con los mtodos de startsWith y endsWith. La interfaz
permitelainclusinenalacondicindebsq
parte del filtro de consulta.
movilidad,quelosautoresde
Operaciones
Las operaciones necesarias para manejar el modelo de persistencia de la
especificacinJDOestnrecogidasenlaseriedeinterfacesyclasesquesondescritasenla
especificacin.Alolargodelcaptulo,seailustradodiversocdigoJavadelosprincipales
elementos necesarios para operar con instancias persistentes y JDO, ahora sern
especificados de forma breve los principales componentes de la interfaz de programacin
que propone JDO. Para conocer detalles concretos, la propia especificacin es el texto de
referencia.
Interfacesyclases
Figura21DiagramadeclasesdeJDO
3.2.5.1. I e
ta
de persi r
cdigoJava er(procesadordereferenciasJDO)queinsertaelcdigo
nt rfazPersistenceCapable
Es eslainterfazquetienequeimplantartodaclasequenecesitedelacapacidad
sti sus instancias. Hay dos opciones: teclear el cdigo o utilizar el procesador de
,JDOReferenceEnhanc
113
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
squepermitena
la impl
az permiten
idadJDO,algestordeestado,obtenerelestadoencurso
rsistenteAlterado.Lasaplicacionesnodeberanusarestainterfaz,
es una
iciales
n PersistenceManager, son obtenidas mediante la interfaz
Per si s
d n implementa s n
y el mtodo esttico
frmula recomendada para preservar la
movilid istenceManager,entre
implementac a la situacin de
persistencia de las instancias JDO de J DOHel per , delegan en las instancias, parmetro
actual de la invocacin, retornando valores adecuados aun cuando los objetos sean
transitorios. Los componentes de aplicacin encargados de manejar las instancias JDO
utilizanestainterfazparaaccederalstatusdepersistenciadelasinstanciasJDO,elestado
dentrodelciclodevidadelasinstanciasJDO.
3.2.5.4. InterfazPersistenceManagerFactory
La responsabilidad de la creacin de las instancias de Per si st enceManager se
concreta en la interfaz Per si st enceManager Fact or y. El enfoque recomendado es
utilizar esta interfaz para obtener referencias vlidas a objetos del tipo PersistenceManager.
La referencias a los objetos de esta interfaz, deberan ser obtenidos a travs del mtodo
esttico de la clase J DOHel per get Per si st enceManager Fact or y, segn queda
recomendadoenlapropiaespecificacindeJDO.LosfabricantesdeimplementacionesJDO
deben proporcionar una clase que implemente esta interfaz. La interfaz configura las
caractersticas de las instancias gestores de persistencia (PersistenceManager). Estas
caractersticas siguen el patrn Java Beans para facilitar el empleo de los mtodos de
configuracin. Las caractersticas son los parmetros de conexin (usuario, fuente y
contrasea),del modelo transaccional, concurrencia,etc. Es recomendada lautilizaci de
factoras de conexiones (Co r necesarias otras
ejecutablenecesarioenlasclasesJavacompiladas,losatributosymtodo
ementacin manejar las instancias JDO. Y todo ello sin necesidad de modificar el
cdigo fuente java, basta con incluir las oportunas declaraciones en el descriptor de
persistenciaXML. Los mtodos definidos en esta interf obtener las referencias
algestordepersistencia,alaident
ymodificarelestadoaPe
interfaz facilitada para los fabricantes de implementaciones de JDO. Los
programadores de aplicaciones deberan utilizar los mtodos de la clase JDOHelper en
lugardelosmtodosdefinidosenPer si st enceCapabl e.
3.2.5.2. InterfazPersistenceManager
Loscomponentesdeaplicacinconresponsabilidadenlamanipulacindelciclode
vidadelasinstanciasyenlaconsultadeobjetosalmacenados,utilizarnestainterfaz.Los
objetos de aplicacin accedern a los servicios de esta interfaz mediante instancias de la
implementacinJDOquematerializanestainterfaz.Habitualmentelasreferenciasin
a los objetos que implementa
t enceManager Fact or y. Un objeto PersistenceManager debera ser capaz de
manejar un nmero in eterminado de insta cias. Las cione JDO o pueden
usar los objetos de usuario como barreras de sincronizacin, salvo para la sustitucin del
gestordeestadoasociadoacadainstanciaJDO.
3.2.5.3. ClaseJDOHelper
Las aplicaciones deberan usar los mtodos de esta clase en lugar de los
establecidos en Per si st enceCapabl e. Esta clase recoge el enfoque recomendado para
accederalestadodepersistenciadelainstanciaJDOdeformaindirecta,yparaobteneruna
referencia vlida al generador de instancias gestoras de persistencia,
PersistenceManagerFactory, cuya clase debe ser facilitada por el fabricante de la
implementacin JDO. J DOHel per ofrece los mtodos estticos de consulta del estado de
persistencia, cambio al estado de Persistente Alterado
get Per si st enceManager Fact or y, que es la
adenlaobtencindelaprimerareferenciaainstanciasdePers
iones de distintos fabricantes. Los mtodos para acceder
n
nect i onFact or y) cuando pueden se
114
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
caracter
in de responsabilidades dentro de las
ager ya que existe una relacin uno a uno entre
.Conestainterfazseproporcionaunagestinde
las opci
mecanismo de persistencia subyacente y control
el primero, exigido por la especificacin JDO, desde el
la consolidacin o revocacin de las modificaciones
efectuad
er presente una vista consistente de los datos de los objetos que
ionaldondelosdatospersisten.Laoperacincon
transaccionesimplicaelestablecimientodeconexionesconlossistemasdedatos,dondeel
estado
En entornos de servidores de aplicaciones J2EE, la
Transactionylasconexionesmediante
la aplic
eventosdelciclodevidadelainstancia
ejecutados por StateManager. De esta forma es
posible
ramador. Los eventos considerados del diagrama de
estados
cronizacin de las modificaciones con el estado
todoj doPr eSt or e.
sticas de conexin como el dispositivo de conexin, controlador, puertos, etc. La
interfaz incluye un mtodo para consultar va objetos Properties las opciones no
configurables, y otro para la obtener la coleccin de las caractersticas opcionales que
disponelaimplementacindeJDOutilizada.
3.2.5.5. InterfazTransaction
La interfaz Tr ansact i on establece la separac
atribuciones de PersistenceMan
Per si st enceManager yTr ansact i on
ones disponibles para el manejo de transacciones, que puede ser aprovechada por
los desarrolladores de clases y componentes de aplicacin, en un entorno sin servidor de
aplicaciones.LasestrategiasdegestintransaccionalofrecidasporestainterfazdeJDOson
dos: gestin transaccional mediante el
optimista de transacciones. En
primer acceso a los datos hasta
as, se mantiene activa una transaccin en el mecanismo de persistencia
correspondiente.Enelsegundo,opcional,cuandolosdatossonvolcadosalmecanismoes
activada una transaccin, verificando la consistencia de los datos modificados frente a
actualizaciones paralelas. La arquitectura posibilita as, que un objeto
Per si st enceManag
controla,sustentadaenelsistematransacc
de los objetos perdura. JDO no concreta cuales son las interfaces entre la
implementacin JDO y los componentes de conexin, ni su vinculacin con las
transacciones y el perfeccionamiento de las mismas (consolidacin o revocacin), esto
queda interno a la implementacin elaborada por cada fabricante. JDO si establece que la
configuracin de las conexiones es responsabilidad de la implementacin realizada de
Per si st enceManager .
implementacindebeestablecerelvinculoentre
acin de la Arquitectura de Conexin J2EE (J2EE Connection) proporcionando las
implementacionesdelosprotocolosnecesarios.
3.2.5.6. InterfazInstanceCallbacks
El papel de la interfaz InstanceCallbacks es proporcionar un mecanismo para
efectuaraccionesquesonasociadasadeterminados
JDO. Los mtodos de esta interfaz son
laincorporacindereglasdeintegridadcomplejas enelciclode vidadelainstancia
JDO. El cdigo de las acciones y la declaracin de implementacin no son automticas,
deben ser codificadas por el prog
msatrsson:
Recupera atributos: Tras la carga de los atributos a la instancia, del grupo por
defectodeextraccin,seefectaelmtodoj doPost Load.
Consolidacin: Previa a la sin
almacenado,esinvocadoelm
Elimina y Elimina Persistente: la transicin a los estados persistente eliminado y
nuevopersistenteeliminadoconllevalaejecucindelmtodoj doPr eDel et e.
Los eventos que conducen al estado Vacio, provocan la ejecucin del mtodo
j doPr eCl ear .
115
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
3.2.5.7.
e de la
iterarsobre todaslasinstancias de una
rdedatosquecontienetodasinstancias
deuna
mentacin de JDO debe proporcionar una clase que implemente esta interfaz. Los
mt o
modific l s e o
instanci te para las clases PersistenceCapable
incl e
un mod
pueden agerquiensirveomltiples.Estainterfazgenerala
secuenc
instanci
3.2.5.10. deJDOExceptionyderivadas
InterfazQuery.ElinterfazconJDOQL,ellenguajedeconsultas
La interfaz Quer y permite recuperar instancias JDO mediante consultas con
criterios de bsqueda expresados con esta interfaz y el lenguaje de consulta de JDOL,
descritoenapartadosanteriores.
3.2.5.8. InterfazExtent
Cada instancia de la clase Ext ent representa la coleccin completa de todas las
instancias de una clase almacenadas en el sistema de datos accedido. Tambin es posible
que decidir incluir o excluir las instancias de las subclases de la clase asociada, bas
coleccin delExtent. Los usos de Ext ent son dos:
determinadaclaseyejecutarunaQuer yenelgesto
ciertaclase.Estopermiteelmanejodegrandesconjuntosdedatosylagestindelos
recursosafectados.LasconsultasefectuadassobreunainstanciaExtent,sonprocesadasen
elsistemagestordedatosdondepersistenlosestadosdelasinstanciasconsultadas.
3.2.5.9. InterfazStateManager
Los programadores no deben acceder a esta interfaz, que permite controlar el
comportamiento de las clases que pueden persistir, las que implantan
Per si st enceCapabl e que es la nica interfaz que accede a St at eManager . La
imple
od s de esta interfaz recogen la consulta sobre el estado persistente, el acceso y
acin de os atributos, y la transicin entre algunos estado d l cicl de vida de
as JDO. El cdigo generado automticamen
uy las invocaciones a los mtodos de esta interfaz. La especificacin JDO no impone
elo de servicio concreto de control del estado de las instancias JDO, por tanto,
serunanicainstanciaStateMan
ia de invocaciones de los mtodos relativos a los cambios al ciclo de vida de
asJDO,recogidosenlainterfazI nst anceCal l backs.
Clases
JDOExceptioneslaclasebaseparatodaslasexcepcionesJDO.
Figura22DiagramadeclasesdeExcepcionJDO
116
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
de las excepciones
cadasporuncontexto
deejecu
deloss elerror:
el usua a la posibilidad de
corregir dadde
plantear nsivo.
3.2.5.11
entacin JDO, facilita un
registro reflexin en tiempo de
ejecuci ceCapabl e) registran la
metain
3.2.5.12
ite reservar determinadas operaciones a la implementacin JDO,
operaci nodeberanserejecutadasporotrosobjetos,deotromodoseraposibleel
accesoainformacinpr tes,oprovocar
conteni
estordelosvaloresdelosatributosalatributousadoenlaidentificacinde
unainstanciapersistente.
onsumer
3.2.6.
Esta c y derivadas permit lase en la gestin disciplinada
producidasentiempodeejecucindebidasasituacioneserrorprovo
cininadecu unproblemadelainfrae ado,bienpor structuraoporelusoincorrecto
cacindelasexcepcionesrespondealafuenteuorigend ervicios.Lasclasifi
rio, el mec o de persistencia o la implantacin de JDO; y anism
yreintentar.Errorescomunespuedensercorregidosenejecucinsinnecesi
unestilo ogra depr macindefe
. ClaseJDOImplHelper
Esta es una clase de asistencia para el lado de la implem
ando la necesidad de de meta datos de las clases, evit
n. Las clases con capacidad para persistir (Per si st en
formacindurantelainiciacin.
. Clase rmission JDOPe
E ase perm sta cl
onesque
ivilegiadasobrelosmetadatosdelasclasespersisten
dosinconsistentesentreaplicacinysistemasdedatos.Estainterfaznoserusada
porlasaplicaciones.
3.2.5.13. InterfazObjectIdFieldSupplier
EstainterfazinternaaPer si st enceCapabl e,esusadaparacopiarcamposdesde
elidentificadordeobjetosdelainstancia,algestordecamposempleadoporelmanejador
del estado de la instancia asociado, objeto de la clase StateManager. Esta interfaz no ser
usada por las aplicaciones. Cada mtodo de esta interfaz facilita la copia segn el tipo de
datosdesdeelg
3.2.5.14. InterfazObjectIdFieldC
EstainterfazinternaaPer si st enceCapabl e,esusadaparacopiarloscamposde
identificadordeobjetosdecadainstanciaJDOdesdeelgestordecamposcorrespondiente
quecontrolaelestadodelainstancia.Estainterfaznoserusadaporlasaplicaciones.Cada
mtododeestainterfazfacilitalacopiasegneltipodedatosdesdelosatributosclavede
lainstanciaalgestordelosvaloresdelosatributos.
3.2.5.15. InterfazObjectIdFieldManager
Esta interfaz interna a Per si st enceCapabl e, extiende los dos anteriores por
convenienciadeimplementacin.
Hastaaquladescripcindelosprincipalesaspectosdelasinterfacesyclasesque
forman el paquete de servicios que debe ofrecer cualquier implementacin JDO. Ahora
pasamosadesgranarotroselementosqueformapartedelaespecificacin.
DescriptordePersistenciaXML
Ms atrs, en repetidas ocasiones ha quedado dicho que JDO requiere un archivo
en XML, donde se describe cuales son las clases cuyas instancias podrn persistir y cmo
objetos y datos estn vinculados. El descriptor de persistencia es la base de conocimiento
conlametainformacinnecesaria,paragenerarelcdigodepersistenciaapropiadoypara
traducirobjetosadatosyviceversa,definirlacorrespondenciaobjetodato.
117
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
obj i
extension vendor - name=sunw key=i ndex val ue=bt r ee/ >
/field
< name=dept >
sunw key=i nver se val ue=emps/ >
<collection el ement - t ype=Empl oyee>
<extension vendor - name=sunw
ey=el ement - i nver se val ue=dept / >
ion>
</field>
ass>
stencia
pecfica qu podr perdurar y algo ms. Podrn persistir los
objetosdelaclaseEmplea ;cadaclaseusael
modelo
name
o emps es una
oleccincuyoselementossondeltipoEmpl oyee.Lasmarcasextensinvendor,enestecaso
ctosligadosalaimplementacinJDO,comoelusodendicesbtreey
ulan ambas clases Empleado y
3.2.7.
acionesseanporttilesentre
na aplicacin debera
ncion Odefabricantesdiferentes.Enel
ptulo ecen
spers las de movilidad, entonces
in.
ubicuo (que funcione en
das p cionales que los fabricantes
erstica no
ndolascapacidadesopcionales,evitandoladependenciacon
ados
nda
ntos,nosedebe
mienceporjdo,enelsoportede
entre usar identidad fijada por la
aplicaciones no deberan requerir de los
instanciasJDO.Encuantoala
nejodel
oqueo
<package name=com. xyz. hr >
<class name=Empl oyee i dent i t y- t ype=appl i cat i on
ect dcl ass=Empl oyeeKey>
<field name=name pr i mar y- key=t r ue>
<
< >
<field name=sal ar y def aul t - f et ch- gr oup=t r ue/ >
field
<extension vendor - name=
</field>
<field name=boss/ >
</class>
<class name=Depar t ment i dent i t y- t ype=appl i cat i on
obj ect i dcl ass=Depar t ment Key>
<field name=name pr i mar y- key=t r ue/ >
<field name=emps>
k
</collect
/c < l
/pack < age>
/jdo < >
Listado30EjemplodeFicherodescriptordepersi
El listado anterior es
doyDepartamentoensusatributossealados
de identidad por aplicacin que requiere de sendas clases para claves primarias
segnlaetiquetaobjectidclass,lasclasesEmpl oeeKeyyDepar t ment Key;elatributo
adems de persistir su valor, es la clave primaria en su clase. El atribut
c
deSun,concretanaspe
de relaciones inversas entre los atributos que vinc
Departamento.
G paralaportabilidad ua
UnodelosobjetivosdeJDOesconseguirquelasaplic
implementaciones realizadas por fabricantes distintos, esto decir, u
fu arsincambiosutilizandoimplementacionesdeJD
ca 19delaespecificacinserecogenlasrecomendacionesdemovilidadqueapar
di as por la especificacin. Si una aplicacin sigue las reg
funcionarconcualquierimplementacinJDOqueseaconformeconlaespecificac
Las primeras recomendaciones para conseguir un cdigo
to artes) son sobre el tratamiento de las caractersticas op
podran soportar en sus implementaciones, capturar la excepcin de caract
soportadayprogr
infrae
amarignora
la structura de JDO utilizada. Otro aspecto con impacto para lograr aplicaciones
ubicuas es el modelado de objetos, para ello las referencias entre objetos declar
en ser de primera categora, las instancias de segu Per si st enceCapabl e deb
categora,vectoresincluidos,nodebensercompartidasentreobjetosdisti
incluirenlasignaturamtodosoatributoscuyonombreco
la identidad JDO cada fabricante puede decidir
aplicacin, por la base de datos o ambas, las
estadosopcionalesoelestadovacodelciclodevidadelas
conectividadadiferentesbasesdedatos,lasaplicacionesdeberanevitarquesuma
bl durantelastransacciones,seaotrodistintodelalecturaconsistenteproporcionada
119
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
scalificadoresdeclaseyatributo.
seguridad de las instancias persistentes evitando el acceso no
denmerosdelneaparadepuracin.
icacin detallada de los cambios,
especificacin,dondepuedeverlos
cl ave
posi ci n r el at i va 3
rrespondientealaclaseampliadaconlacapacidaddepersistir,
cildeentender:
r el at i va 1
i va 2, campo cl ave
anej a anci a
r i ng[ ] j doFi el dNames = {boss, dept , empi d,
I ndi dor es - base de dat os
i vat e
j doPer si st enceCapabl eSuper cl ass = <pcsuper >;
Soporteatodoslo
Preservar la las
autorizado.
depuracinmediantelainsercin Facilitarla
Usotransparentedelapersistencia.
En la especificacin podemos encontrar una expl
luidoenlapropia queaquveremosconunejemploinc
cambios que seran introducidos en el fuente de clase modificada. El cdigo original
apareceenazul,elcdigoaadidoestaennegro,elficherofuenteoriginalescomosigue
package com. xyz. hr ;
yeeKey { cl ass Empl o
i nt empi d;
}
cl ass Empl oyee
{
Empl oyee boss; / / campo de posi ci n r el at i va 0
Depar t ment dept ; / / campo de posi ci n r el at i va 1
si ci n r el at i va 2, campo i nt empi d; / / campo de po
St r i ng name; / / campo de
} / / end cl ass def i ni t i on
Listado31ClaseoriginalEmpleadoysuclaveprimaria
fuenteco Elcdigo
eselsiguienteconalgunoscomentariosparaqueseamsf
xcept i on( )
l gest or de est ado asi gna l os
e at r i but os per si st ent es pr opi os ms l os
en
ount ( ) {
h;
ampo
r et ur n x. name;
e est ado
or al macenado en l a
ger sm= x. j doSt at eManager ;
or def ect o( MEDI ATE_READ)
}
}
/ / j doNewI nst ance
/ *El pr i mer o de l os mt odos auxi l i ar es asi gna el val or del par met r o act ual gest or
de de est ado par a l a nueva i nst anci a cr eada
*/
) { publ i c Per si st enceCapabl e j doNewI nst ance( St at eManager sm
st r act a, t hr ow new J DOFat al I nt er nal E / / Si l a cl ase es ab
Empl oyee pc = new Empl oyee ( ) ;
pc. j doSt at eManager = sm;
pc. j doFl ags = LOAD_REQUI RED;
r et ur n pc;
}
/ * El Segundo de l os mt odos auxi l i ar es adems de
val or es de l a cl ave pr i mar i a usada como i dent i f i cador J DO
*/
publ i c Per si st enceCapabl e j doNewI nst ance( St at eManager sm, Obj ect
oi d) {
/ / Si es abst r act a, t hr ow new J nt er nal Except i on( ) DOFat al I
Empl oyee pc = new Empl oyee ( ) ;
pc. j doSt at eManager = sm;
pc. j doFl ags = LOAD_REQUI RED;
/ / Copi a l os campos cl ave en i d dor J DO de l a i nst anci a ent i f i ca
j doCopyKeyFi el dsFr omObj ect I d ( oi d) ;
r et ur n pc;
}
/ / j doGet ManagedFi el dCount
/ *Est e mt odo gener ado devuel ve el nmer o d
her edados que son manej ados. Est e mt odo ser usado dur ant e l a car ga de l a cl ase
el ent or no de ej ecuci n.
*/
pr ot ect ed st at i c i nt j doGet ManagedFi el dC
r et ur n j doI nher i t edFi el dCount + j doFi el dNames. l engt
}
/ / Mt odos gener ados par a l ect ur a del val or de l os at r i but os j doGet XXX. Uno por c
per si st ent e
/ *Los cal i f i cat i vos de acceso son l os mi smos que l os decl ar ados par a el campo
or i gi nal . As pues, l a pol t i ca de pr i vi l egi os es l a mi sma que l a del campo
or i gi nal .
*/
f i nal st at i c St r i ng
j doGet name( Empl oyee x) {
/ / est e campo per t enece al gr upo de ext r acci n por def ect o( CHECK_READ)
EAD_WRI TE_OK) { i f ( x. j doFl ags <= R
/ / ok t o r ead
}
/ / el campo necesi t a ser ext r ai do por el gest or d
/ / est a l l amada podr a r esul t ar en l ugar del val
i nst anci a
St at eMana
i f ( sm! = nul l ) {
i f ( sm. i sLoaded ( x, j doI nher i t edFi el dCount + 3) )
r et ur n x. name;
r et ur n sm. get St r i ngFi el d( x, j doI nher i t edFi el dCount + 3,
x. name) ;
} el se {
r et ur n x. name;
}
}
f i nal st at i c com. xyz. hr . Depar t ment
j doGet dept ( Empl oyee x) {
/ / est e no per t enece al gr upo de ext r acci n p
St at eManager sm= x. j doSt at eManager ;
i f ( sm! = nul l ) {
i f ( sm. i sLoaded ( x, j doI nher i t edFi el dCount + 1) )
r et ur n x. dept ;
r et ur n ( com. xyz. hr . Depar t ment )
sm. get Obj ect Fi el d( x,
j doI nher i t edFi el dCount + 1,
x. dept ) ;
} el se {
r et ur n x. dept ;
Mtodosde
creacinde
tancias ins
Mtodos
atributo.S
delecturade
ielatributono
moriase
recuperadelgestorde
estadoqueasuvezlo
podraextraerdelabase
dedatos.
estaenme
123
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
( f i el dNumber ) ;
publ i c f i nal voi d j doRepl aceFi el ds ( i nt [ ] f i el dNumber s) {
boss) ;
br eak;
case
f i el dNumber ,
f i el dNumber , me) ;
br eak;
super . j doPr ovi deFi el d
}
except i
Ar gument Except i on( f i el dNumber ) ;
}
pub
) ;
}
}
ds
i but os desde ot r a i nst anci a a est a. Est os podr an
ser ut i l i zados por St at eManager asoci ado par a cr ear i magenes pr evi as par a su uso en
de pr i vi l egi os, el mt odo
l as i nst anci as af ect adas
per t enecen al mi smo St at eManager .
*/
t hr ow new I l l egal Ar gument Except i on
} / / swi t ch
}
f or ( i nt i = 0; i < f i el dNumber s. l engt h; ++i ) {
i nt f i el dNumber = f i el dNumber s[ i ] ;
j doRepl aceFi el d ( f i el dNumber ) ;
}
}
/ / j doPr ovi deFi el d y j doPr ovi deFi el ds
/ *El mt odo gener ado j doPr ovi deFi el d ent r ega l os val or es al gest or de est ado en base
a su posi ci n, por ej empl o cuando el campo es consol i dado per si st ent e.
*/
publ i c voi d j doPr ovi deFi el d ( i nt f i el dNumber ) {
i nt r el at i veFi el d = f i el dNumber - j doI nher i t edFi el dCount ;
swi t ch ( r el at i veFi el d) {
case ( 0) : j doSt at eManager . pr ovi dedObj ect Fi el d( t hi s,
Mtodosde
enciade
gestorde
transfer
datosal
estado.
f i el dNumber ,
( 1) : j doSt at eManager . pr ovi dedObj ect Fi el d( t hi s,
dept ) ;
br eak;
case ( 2) : j doSt at eManager . pr ovi dedI nt Fi el d( t hi s,
f i el dNumber , empi d) ;
br eak;
case ( 3) : j doSt at eManager . pr ovi dedSt r i ngFi el d( t hi s,
na
def aul t :
/ * Si hay super cl ase, del egar a esa
i f ( r el at i veFi el d < 0) {
( f i el dNumber ) ;
} el se {
t hr ow new I l l egal Ar gument Except i on( f i el dNumber ) ;
*/
/ / Si no hay super cl asepc super cl ass, t hr ow an
on
t hr ow new I l l egal
} / / swi t ch
l i c f i nal voi d j doPr ovi deFi el ds ( i nt [ ] f i el dNumber s) {
f or ( i nt i = 0; i < f i el dNumber s. l engt h; ++i ) {
i nt f i el dNumber = f i el dNumber s[ i ] ;
j doPr ovi deFi el d ( f i el dNumber
/ / j doCopyFi el d and j doCopyFi el
/ *Est os mt odos copi an l os at r
el descar t e de t r ansacci ones. Par a evi t ar pr obl emas
j doCopyFi el d puede ser i nvocado uni cament e cuando
publ i c voi d j doCopyFi el ds ( Obj ect pc, i nt [ ] f i el dNumber s) {
/ / l a ot r a i nst anci a debe per t enecer al mi smo St at eManager
/ / y su r ef er enci a no debe ser nul a
i f ( ( ( Per si st enceCapabl e) ot her ) . j doSt at eManager
! = t hi s. j doSt at eManager )
t hr ow new I l l egal Ar gument Except i on( t hi s. j doSt at eManager ! =
ot her . j doSt at eManager ) ;
i f ( t hi s. j doSt at eManager == nul l )
t hr ow new I l l egal St at eExcept i on( t hi s. j doSt at eManager ==
nul l ) ;
/ / t hr ow Cl assCast Except i on, si el ot r o cl ase es i nadecuada
Empl oyee ot her = ( Empl oyee) pc;
f or ( i nt i = 0; i < f i el dNumber s. l engt h; ++i ) {
125
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Fi el d ( Empl oyee ot her , i nt f i el dNumber ) {
el d = f i el dNumber - j doI nher i t edFi el dCount ;
swi t ch ( r el at i veFi el d) {
br eak;
me = ot her . name;
andl ed i n super cl ass
como si gue:
*/
}
/
/ / wr i t eObj ect
/ *Si no exi st e un mt odo pr ogr amado expl i ci t ament e wr i t eObj ect , ent onces uno
es gener ado. wr i t eObj ect asegur a que t odos l os at r i but os per i st ent es y
t r an c n l a i nst anci a y que ent onces
el l a sal i da gener ada por def ect o es vol cada sobr e el ar gument o.
pr i vat e voi d wr i t eObj ect ( j ava. i o. Obj ect Out put St r eamout )
. I OExcept i on{
j doPr eSer i al i ze( ) ;
}
ue t odos l os at r i but os per si st ent es y
t r ansacci onal es
nci a por del egaci n en el
pr i
devuel ve una nueva i nst anci a del i dent i f i cador J DO,
usado /
pub
*/
pub
I nt Fi el d ( 2) ;
}
pub
( ( Empl oyeeKey) oi d) . empi d = empi d;
/ *
( Obj ect I dFi el dConsumer
f c,
j doCopyFi el d ( ot her , f i el dNumber s[ i ] ) ;
} / / f or l oop
} / / j doCopyFi el ds
pr ot ect ed voi d j doCopy
i nt r el at i veFi
case ( 0) : t hi s. boss = ot her . boss;
br eak;
case ( 1) : t hi s. dept = ot her . dept ;
br eak;
case ( 2) : t hi s. empi d = ot her . empi d;
case ( 3) : t hi s. na
br eak;
def aul t : / / ot her f i el ds h
/ / est a cl ase no t i ene super cl ase, l anza una excepci n
t hr ow new I l l egal Ar gument Except i on( f i el dNumber ) ;
/ * Si t i ene super cl ase, el campo se t r at a
super . j doCopyFi el d ( ot her , f i el dNumber ) ;
br eak;
/ / swi t ch
} / j doCopyFi el d
sa i onal es que son ser i al i zabl e, ser n car gados e
*/
Mtodospara
la
zacin.
t hr ows j ava. i o
out . def aul t Wr i t eObj ect ( ) ;
/ / j doPr eSer i al i ze
/ *El mt odo j doPr eSer i al i ze asegur a q
gestionar
seriali
que son ser i al i zabl e son car gados en l a i nst a
St at eManager .
*/
vat e f i nal voi d j doPr eSer i al i ze( ) {
i f ( j doSt at eManager ! = nul l )
j doSt at eManager . pr eSer i al i ze( t hi s) ;
}
/ / j doNewObj ect I dI nst ance
/ / Est e mt odo aadi do cr ea y
/ par a l a i dent i f i caci n por Apl i caci n.
publ i c Obj ect j doNewObj ect I dI nst ance( ) {
r et ur n new Empl oyeeKey( ) ;
}
l i c Obj ect j doNewObj ect I dI nst ance( St r i ng st r ) {
r et ur n new Empl oyeeKey( st r ) ;
}
/ / j doCopyKeyFi el dsToObj ect I d
/ *Est e mt odo copi a l os at r i but os cl ave pr i mar i a desde ot r a i nst anci a per si st ent e o
desde ot r o Obj ect I dFi el dSuppl i er .
l i c voi d j doCopyKeyFi el dsToObj ect I d ( Obj ect I dFi el dSuppl i er f s,
Obj ect oi d) {
( ( Empl oyeeKey) oi d) . empi d = f s. f et ch
l i c voi d j doCopyKeyFi el dsToObj ect I d ( Obj ect oi d) {
}
j doCopyKeyFi el dsFr omObj ect I d
Est e mt odo copi a l os at r i but os cl ave pr i mar i a a ot r a i nst anci a per si st ent e o
Obj ect I dFi el dConsumer .
*/
publ i c voi d j doCopyKeyFi el dsFr omObj ect I d
Obj ect oi d) {
f c. st or eI nt Fi el d ( 2, ( ( Empl oyeeKey) oi d) . empi d) ;
}
pr ot ect ed voi d j doCopyKeyFi el dsFr omObj ect I d ( Obj ect oi d) {
Mtodosde
generacinde
ra
ancias.
identidadpa
nuevasinst
126
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
servicio
3.2.10
elenfoqueaquconsiderado.
cin
3.2.11
O esta descrita en 24 captulos y 3 apndices, en algo ms de un centenar y
medio de pginas; a primera vista y acostumbrados a especificaciones mucho ms largas,
puede parecer que la especificacin no sea completa, pero no es as. Podramos distinguir
seisblo enlaespecificacin:
Un primer bloque, captulos 1 a 4, donde se delimita el contexto de la
especificacin:mbito,objetivos,arquitecturas,actoresimplicadosysuspapeles,ysendos
escenariosejemplodelosdosmodelosdearquitecturaconsiderados.
El segundo, dedicado a la definicin del modelo de persistencia que propugna la
especificacin,captulosdel5al6.Presentaelciclodevidadelasinstanciasapersistiryel
modelodeobjetosparalapersistencia,quesepretendeseaelmismomodelodeobjetosde
aplicacinynegocioutilizadoenunacorrespondenciasinseparaciones.
El tercer bloque formado por los captulos 7 al 15, detalla los interfaces de
programacinautilizarparamanejarlapersistencia.
Bloque cuatro, captulo 16, presenta la integracin entre JDO y los granos de Java
paraempresa.
El quinto, captulos 17 a 22, se detalla la especificacin de distintos aspectos
tcnicos a cubrir por los servicios ofrecidos con una implementacin JDO desde la
perspectivadeintegracineinteroperatividad.
Y un ltimo bloque compuesto por el captulo 23, que presenta la gramtica BNF
dellenguajedeconsultasdeJDO,yelcaptulofinal24,querecogeunalistadecuestiones
pendientespospuestashastalasiguienteversindelaespecificacin.
sdeaplicaciones.Laespecificacinapuntaciertospatronesdecdigoqueayudana
laimplantareintegrarelusodeJDOenunservidordeaplicaciones.
. Asuntospendientes
LaespecificacinJDOrecogeenelltimocaptulo,unalistadecuestionesabiertas
pendientesderesolver.Untotaldequincecuestionessonrecogidas.Algunasdelascuales
sondeespecialinterspara
Transaccionesanidadas.
Puntosdesalvaguardayretroceso.
Referenciasentreinstanciasgestionadaspordistintosgestoresdepersistencia.
Interfazdeprogramacindelprocesadordecdigo.
Interfazdeprogramacinparalarecupera anticipadadeobjetos.
Manejodeobjetosnoestructuradosenormes.
Soporteparalasrelaciones.
Desconexinycierredelafactoradeconexiones.
Cuestionesdemanejodecadenasenconsultas.
Proyeccionesenlasconsultas.
Todas estos temas se pretende estn resueltos, en una prxima revisin de la
especificacin,queyaestahainiciadosucurso.
. Laespecificacin:suorganizacinyredaccin.
JD
ques
128
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
3.2.12. A
os
apndicesquerecogen:
entacinJavadeconsideracinparalaespecificacin
Las decisiones de diseo tomadas para determinar las interfaces y las alternativas
3.2.13. Implementacin
cancelacalificacindeversindefinitiva,y
los pro
loga, es el conjunto de pruebas,
herramientasydocumentacinquepermiteaquienimplementalaespecificacinverificar
sisurea
de los
productos que dicen ser compatibles con JDO. Todo ello permite manejar ms
adecuad
3.2.14 JDO:Correspondenciaobjetodato
Quizs tras la lectura de los prrafos anteriores nos encontramos que an
considerando la lista de asunto s, parece faltar algo m Cmo vincular los
objetos y sus atributos con el modelo de datos de los sistemas de gestin de datos
utilizadosco elose sobjetos.Desdeelenfoquedeestetrabajo,la
corresponde tos es o de
persistencia no o concretar la relacin entre objetos y datos
en los mecanismos de persistenc dio para expresar ste vnculo es incluir, en el
descriptor de persistencia, la d n la correspondencia nte las etiquetas
extensin.Elproblemadelacorrespondenciaesrelegadoani implementacinJDO
ydelosmecanismospropuestosporsufabricante.Esteaspectodelapersistenciaesuneje
centrald nuevaversindeJDO2.0,q enfased andariz in.
3.3. Resumen
nstecaptulolaespecificacinJDOhasidocomentada,paraponerdemanifiesto
los elementos principales de la especificacin. La especificacin esta enfocada a la
persistencia del modelo de objetos del dominio, como un servicio de programacin Java.
JDO establece un modelo de persistencia para las clases del dominio de las aplicaciones
consistente con el modelo de objetos Java, un modelo que no fuerza la utilizacin de
elementosligadosalaimplementacinconcretadelserviciodepersistencia.
pndices
Al final de la documentacin de la especificacin de JDO, estn incluidos un
Lasreferenciasadocum
deimplementacin.
Elhistorialderevisindeldocumento
deReferenciayEquipodecompatibilidaddela
tecnologa
JDO ha sido desarrollada siguiendo el proceso de estandarizacin impulsado por
Sun, el Java Community Process (JCP). Este proceso de estandarizacin obliga a la
realizacindeunapruebadeconceptodelaespecificacinydeunabateradepruebasde
compatibilidadantesdequelaespecificacinal
ductos puedan ser marcados con la conformidad a JDO. La implementacin de
referenciaconcretayhaceejecutablelaespecificacin,constituyelapruebadeconceptode
la tecnologa. El equipo de compatibilidad de la tecno
lizacinesconformealaespecificacin.
JDO incluyeambos conjuntos de programas y documentacin, que son clavepara
permitir efectuar las pruebas oportunas sobre la utilidad de JDO y la verificacin
amentelosriesgosenlaapuestaporestatecnologa
. Qunoaborda
s pendiente s:
moalmacnd
ncia objeto da
. En efecto, JDO
stadosdelo
un requisit
especifica com
ia. El me
eclaraci
que debe ser cubierto por los servicios
media
veldela
ela ueesta eest ac
E
129
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
lodevidadelasinstanciasJDOtienesieteestadosesencialesquecomprenden
que una instancia persistente recorre desde su creacin, modificacin
ccin persistente. Estn especificados en JDO, otros estados de
pcional.
macin bsicos para
consegu
y Ext ent .
ficacin,lasrecomendaciones
bs s
con n
Commu rogramacindeaplicacionesqueposibilitala
persiste
utiliz
deaplic
Elcic
todas las etapas,
hasta su destru
implementacino
Lasinstanciaspersistentesnecesitandeunaidentidadligadaalapersistencia.JDO
ofrece tres modos de identidad: identidad por aplicacin, identidad por gestor de datos e
identidadnoperdurable.
JDO concreta en once interfaces los contratos de progra
ir una persistencia transparente y una facilidad para la recuperacin selectiva de
instanciasmedianteellenguajedeconsultaJDOQL.
Parte de las interfaces estn dirigidas a los fabricantes de implementaciones JDO,
para garantizar su interoperatividad. Un programador debera dominar para conseguir la
persistencia de objetos, bsicamente conocer y utilizar J DOHel per , Tr ansact i on,
I nst anceCal l backs, Quer y
Laespecificacinconcretacmodeclararquevaapersistirmediantearchivosxml.
Los archivos descriptores de persistencia son utilizados por la implantacin y por el
procesadordereferenciasJDO,paragenerarelcdigonecesarioaincluir,enlasclasescon
instanciaspersistentes.Tambin,hasidoincluidaenlaespeci
ica para alcanzar un buen nivel de movilidad, entre diferentes productos conformes
la ormaqueJDOestablece.
La especificacin estndar Java Data Objects, desarrollada en el marco de Java
nityProcess,defineunainterfazdep
nciatransparente,escalabledesdesistemasempotradosaempresarialeseintegrable
andoelestndarEJByJ2EE.Dossonlosmodelosdeejecucin:doscapassinservidor
acionesytrescapasintegradoenservidordeaplicacionesJava.
130
Capt ul o 4
I VA J DO VS OTROS
4.1. mb
a comparativa que se pretende elaborar, tiene
presentes trabajos sobre la cuestin de
K.Dittri dan,trabajosentreloscuales
secompara
A lo
fundamento
enjuiciarJD
Para
podra s
queesms
requisitospropuestos
La si
JDOde
delacompa
COMPARAT
itodelacomparativa
En el primer captulo eran presentadas distintas tecnologas para guardar y
recuperardatosJavapersistentes:laserializacin,JDBC,SQLJylaadaptacinparaJavadel
ODMG(ODMGBindingforJava),yfueestablecidounmarcoderequisitosasatisfacerpor
unserviciodepersistenciaorientadoobjetos.ElanteriorsehapresentadoJDO.
EstecaptulopretendecompararJDOfrenteaJDBC,SQLJyODMGadaptadopara
Java,desdelasperspectivasdelrendimiento,laproductividadyelmarcoderequisitos,que
fue establecido unos captulos antes. L
las opiniones, sobre la cuestin vertidas en los
ch[10],TornstenyD.Barry[35],E.Cecchet[37]yD.Jor
laserializacin,JDBCyJDO[38].
largo del trabajo realizado hasta el momento, han sido presentados algunos
s,opinionesycomentariosquesustentanunabasesobrelaquienleepuedeya
Ofrenteaotrastecnologasdepersistencia.
llevaracabolatareadecomparar,atendiendoalovistohastaelmomento,se
con eguir el objetivo de comparar con unas pruebas de rendimiento sencillas, ver
productivoyfinalmente,elaborarunresumendondesecomparacualesdelos
soncubiertosporlastecnologasencomparacin.
guiente tabla, obtenida del artculo de D.Jordan [38], explica la posicin de
sde laperspectivadeunaarquitecturaencapas,quesirveparadescribirelcontexto
rativa.
Tabla3Alternativasparapersistenciaenlacomparativa
Aplicacin
Objetos java como interfaz bsico
Objetos java
actan como
interfaz bsico
Celdas de
una tabla
sirven como
interfaz
bsico
JDO
J DBC
Serializacin RDBMS OODBMS
SISTEMA DE FICHEROS
131
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
4.2. Comparativa
4.2.1. Rendi
ortante para extrapolar
conclus
apartado de rendimiento, se buscaron
pruebas adas, tres
pruebas nibles sus
siendoredactadosestosprrafos:
patrones de diseo de aplicacin y
aciones. David Jordan ha
ara usar JDO, cuyos resultados viene
sasconferencias.
mientodediferentesproductosJDOsobrelabase
de datos de
as de mapeo
confirmar o descartar, los
ados muestran, diferencias
qu se mide, cmo y bajo que
por operacin, nmero de
ntodebeserconsiderado
sdistintos,comorendimientoholsticoynointegral.
eba es medir, si el rendimiento comparado de JDO, es tan
pueda sustituir a las otras tecnologas de la comparativa, o
n psimo, que no sea conveniente usar
las bases de datos, por lo que no es
urrencia.
jetivo de JDO, donde el aspecto del
que tienen los usuarios de lo rpido que
,eltiempoderespuestadelasoperacionesinteractivasy
portantesdedatoscomplejos.Enrazndelo
empo necesario para llevar a cabo las transacciones
to compuesto de varios de forma interactiva y, por otro lado,
miento
El rendimiento es para muchos un factor primordial, en la eleccin de una
tecnologa. Una tecnologa con aparentes grandes cualidades pero sin la capacidad para
acometer determinadas cargas de trabajo, en tiempos de respuesta, considerados
comnmente aceptables, es desechada. Hay circunstancias bajo las que esta es, la premisa
quemspesaenladecisindeelegirunatecnologayunproducto.
Las pruebas de rendimiento entraan una dificultad imp
iones generales, ya que, los resultados dependen de los productos y entorno
concretos,queinfluyenenlamedida,deformaque,losresultadoscambian,inclusomucho,
en funcin los productos escogidos y los ajustes hechos en la plataforma. De ah, lo
sofisticadoylaboriosodeunasautnticaspruebasderendimiento,queseranobjetodeun
trabajofindecarreracompleto.
Por todo ello, a la hora de plantear este
estndar y sus resultados, para ser tenidos en cuenta. Fueron encontr
relacionadas con este trabajo, pero para ninguna de la tres, estn dispo
resultados,cuandoestaban
RUBIS [53] es un banco de pruebas para
escalabilidad de rendimiento de servidores de aplic
realizado una la adaptacin de esta p
presentadoendiver
OO7[44]permitemedirelrendi
un mode
objetos.
lo usado en 1994, para medir el rendimiento de las bases
TORPEDO2004 [55] que mide la sofisticacin de las herramient
ObjetoRelacional(OR),enlugardelrendimiento.
En este trabajo, las pruebas estn encaminadas a
pronsticos hechos desde los siguientes apartados, si los result
significativasentretecnologas.
Disear una prueba de rendimiento exige decidir
circunstancias o carga. Qu considerar? Tiempo de respuesta
racionesporsegundo,nmerodetransacciones,...Elrendimie ope
conunaponderacindefactore
El propsito de las pru
adecuado como para que JDO
por el contrario, el rendimiento obtenido resulte ta
es medir el rendimiento de JDO. El objetivo no
necesariogenerarunapruebaenconc
Las aplicaciones de negocio son el ob
rendimiento ms relevante, es la percepcin
funcionanlasaplicaciones,estoes
delasoperacionesqueprocesanvolmenesim
cual, las pruebas medirn
s de crear un obje
el ti
respectiva
132
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
EnlaclaseancestroAppOper:
public void ej ecut ar ( )
{
try {
long st ar t , st op;
st ar t = Syst em. cur r ent Ti meMi l l i s( ) ;
t x. begi n( ) ;
ej ecut ar Oper aci on( ) ;
t x. commi t ( ) ;
st op = Syst em. cur r ent Ti meMi l l i s( ) ;
t i empoRespuest a = st op - st ar t ;
}
catch ( Except i on ex) {
ex. pr i nt St ackTr ace( Syst em. er r ) ;
if ( t x. i sAct i ve( ) ) {
t x. r ol l back( ) ;
}
134
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
ySQLusandoelmismocontroladorconector.Elprogramaadaptado
paraJDBC,sediferenciaenlacodificacindelaoperacinqueconsiguelapersistencia,el
mtodoconcretoejecutarOperacion,
protected void ej ecut ar Oper aci on( )
{
St r i ng st r SQL;
cu = new Cuent a( ) ;
cu. aper t ur aCuent aNuevoCl i ent e( ni f , ccc, l i mcr edi t o, apor t aci on
/ / Aper t ur aCuent aNuevoCl i
try {
/ / Al t a cl i ent e
st r SQL = " I nser t i nt o Cl i ent e ( ni f ) val ues ( \ " " + ni f + " \ " ) " ;
pst mt = con. pr epar eSt at ement ( st r SQL) ;
t mt . e ut e(
/ / Al t a cuent a
st r SQL =
" I nser t i nt o Cuent a ( codi gocuent a, debe, haber , l i mi t eCr edi t o, sal do ) " +
" val ues ( \ " " + ccc + " \ " , ?, ?, ? , ?) " ;
pst mt = con. pr epar eSt at ement ( st r SQL) ;
pst mt . set Doubl e( 2, cu. get haber ( ) ) ;
pst mt . set Doubl e( 3, cu. get Li mi t eCr edi t o( ) ) ;
pst mt . set Doubl e( 4, cu. get Sal do( ) ) ;
pst mt . execut e( ) ;
/ / Al t a Movi mi ent o
st r SQL = " I nser t i nt o Movi mi ent o ( codi gocuent a, " +
" f echaOper aci on, f echaVal or aci on, " +
" mot i vo, i mpor t e ) val ues" + " ( \ " " + ccc +
" \ " , ?, ?, ? , ?) " ;
pst mt = con. pr epar eSt at ement ( st r SQL) ;
long f o, f v;
I t er at or i t = cu. get Apunt es( ) . i t er at or ( ) ;
while ( i t . hasNext ( ) ) {
Movi mi ent o mov = ( Movi mi ent o) i t . next ( ) ;
f o = mov. get FechaOper aci on( ) . get Ti me( ) ;
f v = mov. get FechaVal or aci on( ) . get Ti me( ) ;
pst mt t Ti m ne
pst mt t Ti m ne
pst mt . set St r i ng( 3, mov. get Mot i vo( ) ) ;
pst mt . set Doubl e( 4, mov. get I mpor t e( ) ) ;
pst mt . execut e( ) ;
}
/ / Al t a en r el aci ones Car t er a y Ti t ul ar es
St
st r SQL = " I nser t i nt o car t er a ( ni f , codi gocuent a ) " + val nc;
pst mt . execut e( st r SQL) ;
Listado33PruebaderendimientoInteractivoJDO
El programa anterior ser ejecutado sobre la implementacin JDO RI y sobre dos
productos comerciales JDO para RDBMS, Kodo Solarmetric y JDO Genie, ambos sobre
JDBCaccediendoaM
) ;
ent e
ps xec ) ;
. se e( 1, w j ava. sql . Ti me( f o) ) ;
. se e( 2, w j ava. sql . Ti me( f v) ) ;
pst mt . set Doubl e( 1, cu. get debe( ) ) ;
r i ng val nc = " val ues( \ " " + ni f + " \ " , \ " " + ccc + " \ " ) " ;
st r SQL = " I nser t i nt o t i t ul ar es ( ni f , codi gocuent a ) " + val nc;
pst mt . execut e( st r SQL) ;
}
catch ( Except i on e) {
e. pr i nt St ackTr ace( Syst em. er r ) ;
135
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
para la productividad. Antes de obtener los resultados
numricos de la ejecucin de los correspondientes programas y analizar los resultados,
mencionarqueseespera JDBCySQLJ.
JDOena basesdedatosrelacionalesvsJDBC/SQLJ
A star JDO frente SQLJ, estamos comparando tecnologas, que
tiene comn de persistir datos, pero por lo dem sfacen objetivos
diferentes, ta entonces una comparacin desigual. Las implementaciones JDO
revis e este trabajo, utilizan JDBC internamen esta situado encima, en
una ramacinqueutilizadelosserviciosdeJDBC. podrasuceder
conSQL plementacin podramodificarelcdigoejecutabledelasclasescon
cdigo embebido SQLJ a JDBC para el acc co SQL. Bajo esta
perspectiva, una implementac sustentada sobre JDB es ms lenta en el
accesoalosdatosdelRDBMSsiempre.Pero deconlosobjetos?
Insistir que el inters aqu, es s, no el acceso a los datos.
SQLJ y JDBC no manejan objetos sin intervencin del programador, los datos ex
debensertransforma LJmanejantiposde
datos de
implem
quelasolucinJDBCsinmodelodeobjetos,debidoaqueJDBCnotienelasobrecargade
rniente a JDO,
www.jdocentral.com
try {
con. r ol l back( ) ;
}
catch ( Except i on a) {
a. pr i nt St ackTr ace( ) ;
}
Listado34PersistirunacuentaconJDBC
Enunprimervistazo,ladiferenciaesencialentrelaimplementacinJDOylaJDBC
es,elaumentodelaslneasdecdigonecesariasparalograrlapersistenciadelosobjetos
con JDBC, hecho de relevancia
respectoalrendimientodeJDOfrente
ccesoa
l contra JDBC y
n un objetivo s, sati
resul
adas durant te; JDO
capadeprog Igualmente
J,unaim JDO
esttico y usar eso dinmi
in JDO C o SQLJ,
quesuce
el efecto sobre los objeto
trados
dosenobjetosporelprogramadorJDBC3.0ySQ
usuario de SQL99, con la asistencia objetos para correspondencia que
entan el interfaz SQLData, pero sin transparencia! En resumidas cuentas, en el
mejor de los casos cuando se trata con objetos, la latencia resultante debera tender a ser
muysimilares.
Esdeesperarqueconunmodelodeobjetosmuysimple,JDOdeberasermslento
delservicioJDO,consuscaches,controldemodificaciones,Peroconmodelosdeobjetos
complejos,qusucede?Enlosmodeloscomplejosesdondelosmecanismosparamejorarel
rendimientodesempeansupapel,aventajandoaunaaplicacinJDBCnopreparada.
La opiniones en el foro de referencia para todo lo conce
, como la de David Jordan, expresan que cuanto ms complejo es el
deobjetos(relacionesdeherencia,clientela,coleccionesgrandes,navegacinentre
objetos...) mayor es el rendimiento de una buena implementacin frente al equivalente
JDBC (y SQLJ), que probablemente requiera un mayor esfuerzo de programacin y
obtendra peores
modelo
resultados. En una situacin ideal los programadores alcanzaran una
con una implementacin de JDO con
elementos co
deexperienciaydesarrolloenlapersistenciadeobjetos.
solucin cuyo cdigo tendra mucho de comn
mocaches,bloqueosinteligentes,etc.Laspruebasderendimientoconrboles
msadelante,nosayudarnaconfirmarorefutaresteplanteamiento.
Echando la vista atrs buscando situaciones parecidas, los primeros sistemas de
basesdedatosrelacionalesseenfrentaronaunasituacinanlogafrenteaquienesusaban
solo ficheros indexados como los sistemas VSAM, comercializado todava hoy. Es de
esperar importantes mejoras en el rendimiento de las implementaciones, segn maduren
losproductosJDO,cuyosfundamentostcnicosrecogenlosavancesdemsdedosdcadas
136
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Figura23TiempoinicialnecesarioparapersistirlosobjetosvinculadosalacreacindeunaCuenta.
Figura24TiempoparapersistirlosobjetosimplicadosenlacreacindeunaCuenta,ignorandoel
retrasodeprimeraoperacin.
Los resultados presentados han sido obtenidos de una batera de pruebas
consistente, en ejecutar cada programa de forma aislada, libres de concurrencia desde la
lnea de comandos, en 30 ocasiones, agrupando series de 10 ejecuciones consecutivas del
mismo programa, donde los cuatro peores resultados son descartados, y eligiendo como
serie representativa, para cada programa, aquella de resultados ms regulares donde los
valoresconvergenentresucesivasejecuciones.Paralasseriesfinalessecalculanlasmedias
de tiempo presentadas en los grficos. Este complicado procedimiento, pretende evitar la
distorsinintroducidaporelentornodeejecucin.
137
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
entodelmappingobjetosatablas,conocimientoqueenelcaso
de JDB
Las figuras Figura 23 y Figura 24, muestran que con los mejores datos obtenidos,
para el primer acceso, JDO es un rendimiento 24,14% menos eficaz, un 19,44% ms lento
que JDBC, (JDOGenie 294 ms, frente 236,83 ms de JDBC puro), debido en esencia, a la
construccin inicial de las estructuras internas del servicio persistencia, en especial, el
procesamientodelconocimi
C esta embutido en el cdigo de forma invariable. En el segundo acceso, con las
estructurasyelmapeoestablecidosenmemoria,paralosmejoresresultadosseobtieneque,
JDOessolo4%menoseficazqueJDBC,un3.85%mslentoparaestecaso(Kodo43,33ms
frente41,67msdeJDBCpuro).
Rendi mi ento/ Retraso JDO VS JDBC
-24,14%
-4,00%
Si gui ente
V
a
19,44%
3,85%
-10,00%
0,00%
10,00%
20,00%
30,00%
r
i
a
c
i
n
-20,00%
-30,00%
Ini ci al
Acceso
Rendi mi ento Retraso
Figura25JDOvsJDBCvariacindelrendimientoyretraso
lento que JDBC en transacciones
conmodelossencillosdeobjetos,confirmandolosargumentosexpuestosmsatrs.
a suficiente para rechazar JDO frente a JDBC? parece que no, porque
os de respuest almente, de un orden magnitud r, inferiores al
aaplicacin.
evar a cabo la consulta, modificacin eliminacin de un
firmaran con mayores diferencias, recalcaran los
realizados,porlocualnomerecelapenaelesfuerzodesurealizacin.Elpeor
la recuperacin de la instancia antes de su
BCfrenteaJDO.
ltadosobtenidos,sehanconseguidolos
O no comercial, JDO MAX [50] sobre
a tiempos de creacin similares (48 ms), del mismo orden de
.
datosdeobjetos
JDO con ODMG, tericamente no debera haber diferencias de
miento, pues ocupan el mismo hueco entre objetos y bases de datos, sea esta
e datos de objetos han
acceder a sus sistemas de bases de datos, por ejemplo,
rocedern de las
la interfaces de programacin de los sistemas empleados, que no
JDO, y, del uso de tipos de datos predefinidos optimizados, tipos
A
iva
la vista de los resultados, JDO JDBC es ms
interact
Pero
s ti
es la diferenci
lo emp a fin son de simila
bleparaelcomndelosusuariosalinteractuarconun segundo,tiempoacepta
Nuevas pruebas, para ll
objeto, de forma interactiva, con
pronsticos
caso sera el de la eliminacin que requiere
borradodefinitivo,cosaqueevidentementefavoreceaJD
Paracontrastarlaverosimilituddelosresu
datos de rendimiento de una implementacin JD
MySql 4.0, que muestr
magnitud
JDOvsODMGsobrebasesde
Al comparar
rendi
relacional o de objetos. Algu
a
nos fabricantes de sistemas de bases d
lanzado interfaces JDO par
Progress, Versant y Poet. Las principales diferencias de rendimiento p
mejoras introducidas en
tienen equivalencia en
138
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
I t er at or i = ar r . i t er
while ( i . hasNext ( ) ) {
count += count Leaf s( i . next ( ) ) ;
}
}
return count ;
}
static void r ead( Vect or t r ees, int nTr ees, int nTr aver sal s) throws
J DOExcept i on {
try {
Tr ansact i on t xn = db. cur r ent Tr ansact i on( ) ;
Ar r ayOf Obj ect t r ee ;
t xn. begi n( ) ;
for ( int i Tr aver sal s = 0; i Tr aver sal s < nTr aver sal s; ++i Tr aver sal s) {
I t er at or i t = t r ees. i t er at or ( ) ;
for ( int i Tr ees = 0; i Tr ees < nTr ees && i t . hasNext ( ) ; ++i Tr ees) {
at or ( ) ;
t r ee = ( Ar r ayOf Obj ect ) db. get PM( ) . get Obj ect ByI d( i t . next ( ) , true) ;
Syst em. o
count Leaf s( t r ee) ) ;
}
}
t xn. commi t ( ) ;
}
catch ( Except i on exc) {
exc. pr i nt St ackTr ace( ) ;
}
Listado36Recuperacintransparentedelosrboles
EnlistadoanteriorListado36solo nainstruccin,marcadaenamarillo,indicaque
el objeto t r ee debe ser recuperado de base de datos. Veamos ahora que se puede
esperar de los resultados, sabiendo que la especificacin JDO asume como objetivo la
conveniencia de la optimizacin en el ceso a datos y el manejo de grandes conjuntos
resultados(JDOPg.10014.2Objetivos).
Antes de ejecutar las pruebas, comprobamos como JDO efectivamente oculta el
RDMBS, ofreciendo una abstraccin basada exclusivamente en objetos, manejados con
independenciadesisonpersistentesono.
C s
masivas,puedenserfuentedeproblemasd encin,alrecorreryactualizarcolecciones
de obje
cticatodoslosproductosrevisadosofrecen.
jodecantidadesimportantesdeinformacin,enlaque
JDO 1.0
ut . pr i nt l n( " Tr ee has " +
u
la
ac
onJDOelmanejodegrandesvolmenesdedatos,queresultanenactualizacione
econt
tos simultneamente accedidaspor distintosprocesos, con elacceso transparentey
el bloqueo automtico, que JDO implanta. Un control transaccional optimista, puede
mitigar la contencin en estas situaciones, pero esta una funcionalidad es opcional en el
estndar,queenlapr
Continuando con el problema de manejar y actualizar gran cantidad de datos,
considerando como destino de la persistencia los RDBMS, que ofrecen cdigo empotrado
en el servidor de base de datos. Es cierto que JDO no supera la rapidez de los
procedimientos almacenados en bases de datos en el tratamiento masivo de datos.
Tampoco JDBC, ni SQLJ superan a estos procesos embutidos dentro del SGBDR. De los
productos JDO probados, algunos permiten ejecutar cdigo almacenado en las bases de
datos Oracle, SQLserver y SAPdb. Esto permite disponer en JDO, de la efectividad del
cdigoenbasededatos,mejorandoelrendimiento.
Hayunasituacindemane
, es ostensiblemente ms lento que JDBC y SQLJ, es la eliminacin de los estados
persistentes. JDO obliga a recuperar las instancias para proceder a su eliminacin, siendo
142
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
aprovechando los
dispara
en
nicatr
deunobjetoqueda
consolid
yentornosdelibrerasdeejecucindiferentes.
Comprobemos si se confirman los argumentos presentados con las programas de
prueba. Los resultados present ras, han sido obtenidos de la
ejecucin de los programas repetidas veces para reducir la distorsin debida al
en pruebas. No han uidos datos obtenidos con otros productos, bien por
al tacindelosmismosalahoradeprueba,obienporquelosresultadosnotenan
ca serexcesivamentelargos.
posiblesuprimirlasimgenesalmacenadasdelosobjetos,sinlasobrecargadelaoperacin
derecuperacin,conunasencillasentenciaDELETEejecutadaenelRDBMS.Esfcilevitar
la recuperacin de instancias para su eliminacin persistente,
dores y cdigo empotrado de los RDBMS. Esa limitacin en la eliminacin de
objetos, se corrige en la siguiente versin JDO, con mtodos al efecto, sin necesidad de
recuperarlosobjetoscorrespondientes.
Aprovechando las posibilidades de los RDBMS modernos, JDO podra alcanzar
cotas similares a JDBC y SQLJ, que tambin necesitan aprovechar la funcionalidad
empotrada en RDBMS para ser ms eficaces manipulando gran cantidad de datos. La
cuestin importante Es la diferencia tal como para despreciar JDO frente a JDBC/SQLJ?.
Mi opinin es que no,sisabe aprovechar las capacidades delosRDBMS, combinadas con
JDO. Solo un programador novel, sin experiencia, trata de procesar millares de datos
ansaccindeformaremota,trasegandoingentesvolmenesdedatosporlasredes,
esperandoquelapotenciadecomputoyelanchodebanda,resuelvalacontingencia.
FrentealossistemasOODBMSODMG,lasituacindeJDOesdeigualaigual.El
rendimiento en los sistemas de datos de objetos en operaciones de actualizacin masiva,
puedeserinclusosuperioralosrelacionalespuesunasolamodificacin
ada para todas sus referencias, evitando el trasiego de grandes volmenes de
datos.Dehechoelelevadorendimientodelossistemasdebasesdedatosdeobjetosesuno
delosargumentosparasueleccinfrentealossistemasdebasesdedatosrelacionales.El
acelerador de partculas nucleares de Stanford y del CERN, son ejemplo de referencia.
Existen ya implementaciones comerciales de OODBMS que ofrecen interfaz JDO, como
FastObjects, por lo cual JDO puede aprovechar el mayor de rendimiento de los OODBMS
enesteterreno.Pareceverosmilquelosrendimientosentareasdeactualizacionesmasivas
seansimilaresentreJDOyODMG.
EntodosloscasosseutiliceunRDMBSuOODBMS,elfactordecisivocontribuyenteal
rendimiento es plasmar un buen diseo de las clases, de los modelos de persistencia y del esquema
fsicoenbasesdedatos.
Una primera conclusin, previa inclusin a los resultados, es que en todos los
casos,RDMBS,OODBMSoficheros,JDOpermiteemplearelmecanismomsconvenientea
laproblemticaconcretasinsernecesarioprogramarparacadamecanismodepersistencia
expresamente, esta es la principal ventaja que transluce a la prueba. La adaptacin
requerida en los programas JDO para usar una u otra plataforma ha sido la de emplear
unosarchivosdeconfiguracin
ados en las siguientes figu
de carga
torno de sido incl
gunalimi
bida,por
143
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Figura26Resultadospruebaderendimientoparaobjetoscomplejos
icultadeimplicacionesdeunbuenmodelodedatosadecuado
para el
oparahacerpersistenteelobjeto,
dndole
oducida,esinclusoinferiora
product
Figura28Sobrecargadelapersistenciaenlaspruebasrealizadas
serializados en un campo blob, estn en los mismos ordenes de magnitud que los
programas de carga equivalentes para ODBMS ODMG, desde unos pocos segundos a
menosdeunminuto,tantoparalacreacin,comoparalarecuperacin.
Quedapatenteladif
rendimiento. Los esquemas normalizados, son fciles de entender y de usar, pero
paraciertostiposdetareasnoapropiados.Ademsderendimientosdispares,losesquemas
ofrecen distintas posibilidades de actualizacin y consulta. En este caso, el modelo
desagregado permite el bloqueo y consulta individual de una instancia cualesquiera para
su actualizacin, mientras que el modelo con blob, deja todo el rbol bloqueado en el
RDBMS cuando es actualizado un nodo, salvo que sea emplee un bloqueo optimista. La
mayor desventaja del modelo con serializado, es la imposibilidad para consultar ad hoc
conSQLdirectamenteelnodocualesquieradeunrbolquecumpleciertascondiciones.
La tesis sostenida sobre si JDO es adecuado para situaciones de manejo gran
nmero de objetos complejos, queda respaldada por la pequea batera de pruebas
efectuada,enespecial,enconsideracindelostiemposderespuestamejoresobtenidosde
la solucin JDO RDBMS frente a ODMG OODMS, en teora ms eficaz; y a tenor del
esfuerzoquesupondraprogramarunasolucinequivalenteenJDBC.
Respecto de ODMG y JDO, se comprueba que las diferencias de tiempos, aunque
enproporcinsonabultadas(3s.sobre7s.y30s.sobre45s.),losordenesdemagnitudde
los resultados, tanto para JDO sobre RDMBS como ODMG sobre OODBMS, son los
mismos. Es ms, para FastObjects OODBMS, con frontal JDO y ODMG, es ms rpido su
APIJDOqueelAPIODMG(30spor44s)debidoalmtod
un nombre. Tambin se confirma en parte, el pronstico hecho de cmo JDO y
ODMGdeberantenerrendimientosmuysimilares.
En otro orden de cosas, los resultados anteriores desvelan tambin un hecho
importante a mencionar. Que el modelo relacional no siempre es la opcin ms adecuada
parapersistir,esteesunejemplo,dondelosOODBMS,ofrecenmejoresresultadosquelas
demsalternativas.
Por otro lado, respecto a la optimizacin de algunas de las implementaciones
utilizadas,ejemplodeKodo,seobservaquelasobrecargaintr
osideadosparaOODBMS,comoVersant.UnabuenaimplementacinJDO,puede
llegarasertanbuenacomounproductoODMGOODBMSenlagrabacinyrecuperacin
segnqucargasemaneje.
Sobrecarga persistencia
1886,79%
1800,00%
0%
808,63%
150,00%
125,00%
0,00%
200,00%
400,00%
600,00%
800,00%
0% 1000,0
1200,00%
1600,00%
2000,0
Creacin Recorrido
1400,00%
jdo rdbms
oodbms
145
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
de ncia a s fi la de d
esde
lusindelRendimiento
oeltiem
ODMG.
Considerandosoloelrendimiento,JDOnoremplazaaJDBCySQLJ,enaplicaciones
condatossimplesmanejadosconSQL.
Rendimiento
J DO ODMG
Tecnologa J DBC/SQLJ
J DBC OODBMS OODBMS
Esquema persistencia normalizado normalizado
desnormalizado
y serializacin
objetos objetos
Modelo de objetos simple Superior Aceptable Alto Aceptable Aceptable
modelo de objetos complejo Inaceptable Inaceptable Alto Alto Alto
ElrendimientodeJDOnoesunfactorclaramentediferenciador,afavoroencontra
deJDOyfrentealrestodelasotrastecnologas.Suaportacinesencialtienequevenirde
otradimensin,laproductividad.
Productividad
La productividad en la programacin Java sobre una tecnologa de persistencia,
vienedeterminadaprincipalmenteporesfuerzonecesarioparacrearlosprogramasconesa
tecnologaydecuntocuestanlosproductosnece
4.2.2.
sariosparausaresatecnologa.Dejandoa
un lado el aspecto organizativo, el esfuerzo de producir programas Java, con una
tecnologa uotra, depende de cuanto cdigo fuentesea necesario programar para realizar
la funcionalidad requerida. La inversin en una tecnologa de persistencia debe estar
146
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Li neas de Cdi go
85 176
95
69 71
496
360 671
195
80%
100%
346 351 1923
0%
e
R
o
o
m
C
o
u
r
s
e n n
t
r l
20%
40%
60%
L
e
c
t
u
r
P
P
e
r
s
o
S
t
u
d
e
r
o
f
e
s
s
o
T
o
t
a
jdbc
odmg
Figura29ComparativadelnmerodelneasdecdigoparaunamismaaplicacinescritaconJDBCy
ODMG
elnmerodelneasdelasolucinJDBC
con una y otra solucin. La siguiente
nmerodelneasparacadaclase.
Lafiguraanteriorenfrentaparacadaclase
ODMG, junto al total de lneas y su equivalente
presentalosporcentajesdereduccinen
Reduccin Cdigo
% 100,00%
76,39%
51,28%
80,06%
%
79,77%
0,00% 20,00% 40,00% 60,00% 80,00
Professor
Student
Person
LectureRoom
vaconODMGrespectodeJDBC.
ndoelartculoparecequeenese
go de persistencia necesario. Otros
delapersistencianoresideenlasclases
en [18], en tales casos la reduccin es
diciona la cantidad de lneas del total,
,esporeso,quevemosestimacionessobre
ia, que oscilan desde el 40% (Oracle) al 70% (Cocobase).
l,parecedemsinters,medirelefectosobreelcdigodedicadoa
erzo necesario para llevar a cabo la misma funcionalidad de
ente a JDBC solo, sin la ayuda de herramientas OR, que
JDO.
ajando con JDO, en el nmero de lneas dedicadas a
modificar una aplicacin ya realizada, ms real que el ejemplo del
perosimple,sencilla:laaplicacindegestindereservasderestaurantes,ClubMed,
del libr
incluido
Figura30PorcentajedereduccindelcdigoJa
Lareduccinvistaesmuysignificativa,pero
di
leye
ejemplo, las clases del modelo encerraban el c
n planteamientossoncomnmenteutilizados,endo
del modelo, an trabajando con JDBC, por ejemplo,
muy inferior. Tambin el tipo de aplicacin con
dedicadasamanejarlapersistenciadeloobjetos
el esfuerzo dedicado a
a
persistenc
Enrazndetodolocu
la persistencia, el esfu
persistencia de los objetos, fr
tambinreducensignificativamenteelesfuerzodedesarrolloparapersistircomo
Para me
tir, se escoge
dir el ahorro trab
persis
banco,
o de Robert Orfalli [23]. Al mismo, tiempo permite hacernos una idea, de la
capacidad e impacto de JDO en la adaptacin de aplicaciones heredadas, uno de los
objetivos marcados en este trabajo. La versin modificada sustituye los mtodos con
instrucciones en JDBC, por otros equivalentes con JDO. Otros mtodos de la aplicacin,
snuevosmtodosquetienenqueverconlaplataformaoproductosescogidos,son
ignorados.Lafuenteseencuentraenlosanexos.
148
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Lneas de Cdigo
16
15 23
4
4
18
18
118
43
17 25
23
30
37
22 19
216
20
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
a
d
c
a
n
c g
t
C
lu
g
d
R
e
e
l
R
e
e
t
B
g
e
t
C
l
b
R
e
s
e
t
R
e
s
e
r
v
s
e
r
v
a
r
g
a
i
a
t
i
o
n
a
t
i
o
n
n
I
n
f
o
u
b
P
r
i
e
r
v
a
s
e
r
v
g
e
t
D
g
e
t
C
lu
b
s
T
o
t
a
l
e
s
c
e
s
t
i
o
n
s
a
t
i
o
n
a
t
e
s
g
e
Original
J DO
ndeClubMedconJDOvsoriginalJDBC
plo es inferior a la obtenida en artculo de
in total es de un 45,37%, con una media de reduccin
Figura31Lneasdecdigoenlaaplicaci
La reduccin obtenida sobre este ejem
[35], de la Figura 29. La reducc
39,69%.
Reduccin Cdigo
62,79%
86,67%
1,35%
82,61%
100,00%
%
11,76%
8,00%
5
9,09%
5,26%
45,37%
0,00% 20,00% 40,00% 60,00% 80,00%
Totales
getClubs
getDates
getReservation
getClubReservations
getClubPrices
getBargainInfo
cancelReservation
addReservation
Figura32ReduccindelnmerodelineasenClubMedmodificadoparaJDO
as que consiguen un menor nmero de lneas con un
do la potencia sintctica de Java. Tambin, cambiando
de objetos persistentes es posible mejorar el nmero de lneas. El
puede comprobar sobre en los siguientes fragmentos de cdigo un ejemplo de los
lcdigo.
j ava. l ang. Except i on {
this. pm. cur r ent Tr ansact i on( ) ;
pm. r ef r esh( aResv) ; / / r ecuper ar dat os asi gnados por BD
Evidentemente, hay frmul
cdigo ms enrevesado aprovechan
el diseo del modelo
lector
cambiosene
Listado37MtodoaddReservationconJDO
public long addReser vat i on( Cl ubs aCl ub,
r vat i ons aResv) throws Rese
try {
sact i on t = Tr an
t . begi n( ) ;
aResv. set Cl ub( aCl ub) ;
this. pm. makePer si st ent ( aResv) ;
149
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
esencial
entre am
/ / l
re
{
Syst em. out . pr i nt (
4.2.2.2. NmerodelneasJDOfrenteaODMGparaJava
ElnmerodelneasdeunasolucinJDOyotraODMGparaJavaesmuysimilar,
ya que ambas tecnologas implantan la transparencia y la persistencia por alcance. Basta
con vistazo, al cdigo fuente de las pruebas de rendimiento, Listado 35, y al Listado 40,
paraconfirmarquenohaydiferencianotoriaenelnmerodelneas.Ladiferencia
bas en el cdigo, es la exigencia de ODMG de utilizar ciertos tipos. En el test de
rendimiento la clase ArrayOfObject, precisamente para facilitar la migracin de la
aplicacin a ODMG, porque el estndar incluye un tipo anlogo del mismo nombre
ArrayOfObject, que en los programas ODMG, no hace falta declarar. En resumen, el
nmerodelneasparaprogramarenjavalapersistenciaconJDO,noesclaramentemenor
queenODMGparaJava;enestesentido,JDOnoesmsproductivoqueODMG.
Listado39ClaseArrayObject
public class Ar r ayOf Obj ect
implements Col l ect i on, j ava. i o. Ser i al i zabl e {
/ / Est a cl ase es una Fi r st Cl ass Obj ect ( FCO)
/ / Tendr a i dent i dad pr opi a.
/ / Es compl ej o, l os ar bol es sobr e
os que se mi de el r endi mi ent o
private Vect or pVF = new Vect or ( ) ;
public int si ze( ) {
turn this. pVF. si ze( ) ;
}
Listado40PruebaderendimientodecreacinderbolesODMG
static Vect or wr i t e( int dept h, int nodesPer Leaf , int nTr ees) throws
com. ver sant . odmg. ODMGExcept i on {
Ar r ayOf Obj ect ao = null;
Vect or t r ees = new Vect or ( ) ;
try {
St r i ng s = null;
for ( int i = 0; i < nTr ees; ++i ) {
Tr ansact i on t xn = new Tr ansact i on( ) ;
s = " Ar bol " + i ;
t xn. begi n( ) ;
ao = cr eat eTr ee( dept h, nodesPer Leaf ) ;
db. bi nd( ao, s) ;
t r ees. add( s) ;
t xn. commi t ( ) ;
}
}
catch ( Except i on exc) {
exc. pr i nt St ackTr ace( ) ;
}
return t r ees;
try {
db = Dat abase. open( " per f base" , Dat abase. openExcl usi ve) ;
}
catch ( ODMGExcept i on exc)
" Er r or de conexi n" ) ;
exc. pr i nt St ackTr ace( ) ;
throw exc;
}
try {
st ar t = Syst em. cur r ent Ti meMi l l i s( ) ;
t r ees = wr i t e( dept h, nodesPer Leaf , nTr ees) ;
st op = Syst em. cur r ent Ti meMi l l i s( ) ;
151
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
4.2.2.3.
r a los datos. En ODMG y JDO, el acceso a transparente evita la
nec d
lalocali
por re
, consiste de una interfaz de programacin, Query, y una semntica con
gram ti
cand a
comput
queels
mecanis
motivo
JDO2.0
agrupam
datosre
relativas dos de datos de usuarios (objetos) aumentando su
com ej
to de objetos que
cum e
sobre al
Cuando deunaSQL,esunResulSet,unconjuntodefilas
cuyoselemen distintosmtodosJDBC.
que recl
conexiones directas subyacentes para procesar las sentencias SQL. Los productos JDO
revisad
in de nuevos
programadores,puesnorequierenco eJavaotrolenguaje,elSQLoelOQL.
Afindecuentas,SQLesclaramentesuperioraJDOQL,tambinmscomplejoynecesita
de una intervencin mayor del programador. Si bien SQL es ms potente en todos los
aspectos que JDOQL, la integracin con JDBC de SQL, requiere de ms lneas de cdigo
JavaqueJDOQL.
4.2.2.4. LenguajedeconsultasJDOQLfrenteaOQL
OQLyJDOQLsonambossonorientadosaobjetos,parecidosenquelosfiltrosde
consultaaccede satri yob miem los oscon dos.ODMG3.0
OQL admite adems la composicin, la proyeccin o un tipo primitivo como el resultado
de una consulta, es un lenguaje funcional y ortogonal, que permite subconsultas,
agrupamiento e invo rico y complejo que
JDOQL,
menor potencia
que SQL y que OQL, el nmero de casos prcticos reales que necesitan de consultas de
LenguajedeconsultasJDOQLfrenteaSQL
Los programas JDBC y SQLJ se caracterizan por la utilizacin del SQL, como
frmula para accede
esi addeutilizarunlenguajedeconsultasportodaspartes,solocuandoesnecesarioen
zacindelosobjetosiniciales,desdeloscualessealcanzanotrosconlanavegacin
la ferencias.
JDOQL
caJava,queexpresalascondicionesdeseleccin,aplicadasalacoleccindeobjetos
id tos implicados. Es un hecho reconocido la limitacin expresiva y completitud
acionalJDOQLfrenteaSQL.Perocomocontrapartida,JDOQLesindependientede
istemaseaunsistemarelacionalono,estopermitedesacoplarlasconsultasdelos
mosdepersistencia.
LamenorpotenciaexpresivaycompletitudcomputacionalJDOQLfrenteaSQL,es
dedebatesobrelaconvenienciadeextenderJDOQL,dehecho,laespecificacinde
extenderesteconnuevafuncionalidad:borradodirecto,envodeSQLalSGBDR,
ientos,resultadoscalculadosyotros.Enelescenariodelosfabricantesdebasesde
lacionalesyobjetorelacionalessevieneincorporandoSQL99,connuevasclusulas
al manejo de tipos estructura
pl idad,dificultaddeaprendizajeyuso0.
El resultado de una consulta JDOQL siempre es un conjun
pl nlascondicionesdelfiltrodeconsulta,nuncaelresultadodeunclculoefectuado
gunos de estos objetos, cosa que si es posible en SQL sobre las filas procesadas.
trabajamosconJDBC,elresultado
tosnecesitansertratadoscon
CuandoseaccedeconJDOaunsistemarelacional,partedelapotenciaexpresiva,
aman algunos, puede ser obtenida conectando objetos a vistas o accediendo a las
ospermitenelaccesoalasconexionessubyacentes,paralarealizacindesentencias
SQLquenopodranserexpresadasenJDOQL,conlaeconomasintcticapropiadeSQL.
La simplicidad de JDOQL es una ventaja en la formac
nocerademsd
nalo butos jetos brosde objet sulta
predica
OQLesmejorqueJDOQL.
que JDO es una tecnologa con la que es
ms fc
de JDO no
excluye
estaalapar,sinose
conside
Pa para un puesto de
ollador en tareas de mantenimiento, desde el enfoque propuesto, se parte de las
tes
Pe suficienteparaalcanzarla
ayprocesodedesarrollo.
Co amasjavadeoscilanentrelos[10,00,100,00]ala
hora.
lasimplementacionescomercialesparaunalicenciade
los 1.000 y los 6.000. Examinados distintos precios
fabricantes incluido mantenimiento, la inversin promedio en JDO sera de
3.3
ra
Un
fo erar que no todo el tiempo trabajado es productivo, este dato
correspondealascifrasmanejadasenEspaaporalgunadelasempresasdelsector
se Seconsideraunajornadade40horas
se
El laproduccineficazestadedicadoacodificarpersistenciaJava.
JD stencia.
de
desarrollo, r y
pr
Loscostesdeformacin,adaptacinyentrenamientoparaimplantarlatecnologa
absorbidosenelporcentajedetiempono
Re
in,
desarrollad
ra estimar el clculo del retorno de la inversin en JDO
desarr
siguien premisas:
riododeclculo,2anualidades,alconsiderarunplazo
inydestrezasadecuadasusandounatecnolog formac
stesdeproduccindeprogr
Lospreciosdemercadode
desarrollo, oscilan entre
49,80.SesuponelamismainversinparaJDBC,pueslospreciososcilanenun
ngosimilar.
aeficaciadel65%,el65%deltiempodeproduccinesprovechoso.Estaesuna
rma de consid
rviciosdeinformticadenuestroentorno.
manay52semanas.
40%de
Oreduceun35%elesfuerzodedesarrollodelapersi
El efecto de la mayor capacidad productiva por la reduccin del esfuerzo
ms cantidad de tiempo para producir, es ignorado para simplifica
esentarunescenarioprudente.
seignoran,porquesesuponenigualesy
productivoestimado.
sultandoconesteescenariodepremisas,queseobtieneunrpidoretornodela
en poco menos de un ejercicio la inversin en una licencia de JDO para un
or,quedafinanciadaporelahorroenloscostesdeproduccin.
invers
Retorno Inversin
113,01%
226,02%
339,03%
452,04%
10,00 20,00 30,00 40,00 50,00 60
565,05%
678,06%
0,00%
200,00%
400,00%
600,00%
800,00%
1000,00%
1200,00%
00%
00%
1800,00%
,00 100,00
1695,15%
1400,
1600,
B
/
I
%
Coste / Hora
Figura33RetornodeInversinenunalicenciadeJDO.
erior al 100%, seala que en el mismo periodo,
inversin y beneficios se igualan, cuanto mayor sea este mejor, la inversin es ms
favorable. Bajo el escenario considerado, en todos los casos, la inversin en JDO sera
dap
Un retorno de inversin (ROI) sup
supera orlosbeneficiosreportadosconelmenorcostedeproduccin.
154
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
ientoexcepciones,verificacintipocompilacin
SQLJ
Tratam
JDBC Tratamientoexcepcionesentiempodeejecucin
ODMG
Excepcionesycompilacin.Esmsfiabledelos4.
JDO Excepcionesycompilacin
R03.Encap
fcil caer en el diseo no modular, al separar
sinsolucindecontinuidadentrelosdosmodelos,eldeobjetos
yeldedatos
sulacin(Obligatorio)
SQLJ Es posible programarla, pero es
datosyobjetos.IncluyecapacidadesparamapeoatiposdeusuarioSQL99.
Hayseparacin
JDBC EsposibleencapsularelcdigoJDBC
JDBC 3.0 incorpora clases pa
java.
ra el mapeo entre SQL99 tipos usuario y clases
delos:Objetosydatos Brechaqueseparalosdosmo
ODMG S,hayseparacinentremodelodeobjetosydatos.EselmodeloODMGJava
JDO Si,noexisteseparacinentredatosyobjetos,unnicomodeloJavadeobjetos.
R04.Diferentesestilosdeaplicacin(Obligatorio)
SQLJ Modelo transaccional. El estndar no considera la posibilidad de distintos
estilos de aplicacin, es una cuestin de programacin y de las posibilidades
do.AplicacionesOLTP.BloqueoporSQL SGBDRemplea
JDBC demSQLj.AplicacionesOLTP.BloqueoSQL.
ODMG DBMS, no
incluye transacciones distribuidas o incluidas en serv. aplicaciones J2EE,
or.OLTP.Bloqueoexpreso
Modelo transaccional ODMG 3.0 depende del OODBMS y el R
manejoporprogramad
JDO Contempla distintos estilos de aplicacin. Modelo transaccional pesimista y,
nes dirigidas a
optimista(opcional),bloqueoautomticoysegnSGdatos.
Una Implementacin estndar debe soportar las aplicacio
EntornolocaleintegradosenServ.AplicacionesEJB
R05.Difere
distribuidos. El modelo base es una arquitectura monoltica, no se consideran
ntesarquitecturas(Obligatorio)
SQLJ C/S de dos o ms capas, no considera la posibilidad de objetos remotos
156
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
otrosmodelos.
JDBC demSQLJ.
ODMG
Losproductoscomercialespuedenseraplicadosendiferentesarquitecturas,
peronoesestndar.
JDO Exigenciaestndarfuncionamientoendistintasarquitecturasdesdeempotrado
aservidoraplicacionesJ2SEE
R06.Extensibilidad(Opcional)
SQLJ No se consideran otros mecanismos que no sean compatibles SQLJ. No puede
por el programador, extendiendo los las ser aadidos nuevos mecanismos
claseseinterfaces
JDBC IdnticamentequeSQLJ
ODMG
Si,implementandolasinterfacesesposiblepersistirenotrosmecanismos.Las
clasesbaseofrecidaspuedenserextendidasconnuevasfuncionalidad.
JDO Si es extensible, se consideran distintos meca relacionales y objetuales.
Es posible
nismos
implantar los interfaces exigidos. Adems la sustitucin de
implementacionesestaaseguradaporlaexigenciadecompatibilidadbinaria
R07.Facilidaddeuso(Obligatorio)
ofuentemenoslegible. SQLJ DominardoslenguajesJavaySQL.Presentaelcdig
JDBC La facilidad de uso procede de que los patrones de cdigo estn solidamente
establecidos.
ODMG
Buena,perocadafabricanteofrecesuimplementacin.HayqueaprenderOQL
JDO LafacilidaddeusoesExcelente,APIcomn.EsnecesariodominarJDOQL
R08.Escalabilidadyrendimiento
ydel tratamiento de grandes
cantidadesdefilas,dependientedelaimplantacin
SQLJ Si tiene muypresente el objetivo de rendimiento
JDBC Sonrequisitosasumidos.Seofrecendistintasopciones.Defactoofrecidaporlos
fabricantesdeconectoresabasesdedatos
ODMG
odondecadafabricanteofrecesupropiaaproximacin. Sonobjetiv
JDO
Si,esunaexigencia,algunasopcionessonestndar.Elfabricantepuededecirla
implantacinmsconveniente.
157
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
4.3.2. ion
rd torio)
Func ales
R09.Gua aryrecuperarobjetos(Obliga
SQLJ No. Permite SQL 99 tipos de usuario expresa. Cierre de persistencia
programadoadiscrecin
JDBC No.SeprogramaparacadacasoJDBC3.0SQLData,simplificaeldesarrollo.Va
. programacinexpresa
ODMG
Si,hacerpersistentemediantebloqueoexpresooguardarelobjeto.Incluyeel
grafodeobjetosdependientes
JDO camente. Hacer persistente y ya esta. Incluye el grafo de objetos Si, automti
dependientes
R10.Operacionesbsicasdeactualizacindelestado(Obligatorio)
SQLJ Programadasexpresamente
JDBC Programadasexpresamente
ODMG
saenelcontextodeunatransaccin,bloquearelobjeto,
transaccin
Si,deformaexpre
provocasuconsolidacinalfinalizarla
JDO Si,deformaexplicitaytransparente,JDOcontrolaloscambios.MakeDirty(Obj)
R11.Identi
SQLJ madas
daddelosobjetospersistentes(Obligatorio)
Progra
JDBC Programadas
ODMG
porelOODBMSO,oelRDBMS Ofrecida
JDO Si,sonconsideradostresmodelos:database,application,nodurable.
R12.Ortog lidad(Obligatorio)
SQLJ esortogonal,noesfcilimplantarcdigogenricodeaccesoadatos,fuerte
lamientoentreelcdigo,elmodelodeobjetosydedatos.
ona
No,
acop
JDBC peroesposiblecrearsolucionesbastanteortogonales. No,
ODMG
ciertostipos.
Si,algunostiposdeobjetosnopuedenpersistir.Esunaexigenciaelusode
JDO Sieselmsortogonalqueelresto.Algunosobjetosligadosnopuedenpersistir.
158
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
ncu atorio)
SQL
R13.Co rrencia(Oblig
SQLJ Si,Bloqueoexpresooimplcitosobrelosdatosporinvocacin
JDBC SQL Si,Bloqueoexpresooimplcitosobrelosdatosporinvocacin
ODMG
Si,manualmanejadaporelprogramadorysegnfabricante.
JDO Si,elbloqueoimplcitoautomticodelosdatosasociadosenSGBD.
R14.Transa
SGBR.Noafectalosobjetos
cciones(Obligatorio)
SQLJ Si,del
JDBC Si,delSDGBR.Noafectalosobjetos
ODMG
Si,perodependendelaimplementacindecadafabricante.Bloqueoanivelde
objetos
JDO Si, locales o integradas en JCA (Connector interfaz), segn otros API java
estndar
R15.Diferentesmecanismosdepersistencia(ObligatorioaRDBMS,otrosopcional)
SQLJ SI,solomecanismosqueofrezcanunservicioJDBC.
JDBC SI,solomecanismosqueofrezcanunservicioJDBC.
ODMG
Si,basesdedatosrelacionalesydeobjetos.
JDO Si, es posible, cada Gestor Persistencia asociado a uno. Un objeto queda
vinculadoaunsoloGestor.
R16.Distribucinsobredistintosmecanismos
SQLJ Si,amecanismosqueofrezcanunservicioJDBC.
JDBC Si,amecanismosqueofrezcanunservicioJDBC.
ODMG
onexinsimultneasaBDdistintas. Si.C
JDO ciado a una BD. Conexiones Si, mediante Gestor Persistencia, cada uno aso
mltiples
R17.Integridadobjetos
SQLJ No,Programada.
159
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
JDBC No,Programada
ODMG Si,noincluyeeventosdeBD
JDO Si, incluye la notificacin de algunos eventos de BD. Pero no considera
estandarizarelmapeodeobjetosatablas,esresponsabilidaddelosfabricantes
o des lucionesJDO.
R18.Transparencia(Obligatorio)
SQLJ No, la transparencia no se considera, pues tampoco tiene presente un modelo
bjetos. deo
JDBC No, la transparencia no se considera, pues tampoco tiene presente un modelo
deobjetos.
ODMG
isitoplasmadoenlasimplementacionesODMG Si,latransparenciaesunrequ
JDO implementacin Si,esunobjetivofundamentaldetoda
R19.Consultas(Obligatorio)
To
jed
bebidoparalasconsultasestticasySQLdinmicomedianteJDBC
dos cubren el requisito de construir y utilizar consultas ad hoc, utilizando un
econsultas. lengua
SQLJ SQLem
JDBC SQL
ODMG
OQL
JDO JDOQL
R20.Cach(Obligatorio)
SQLJ Si.
JDBC Si.
ODMG
Si.
JDO Si.
R21.Iteradores(Obligatorio)
ultSet SQLJ Si.Res
160
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
JDBC Si.ResultSet
ODMG
Si.Iteradotesparalascoleccionespersistentesylasconsultas
JDO Si.Iteradotesparalascoleccionespersistentesylasconsultas
bjeto presentantes(Obligatorio)
SQLJ oesunafuncionalidadrecogida.
R22.O sre
N
JDBC Idem
ODMG
Siconsideraestacapacidad.
JDO Si. El estndar no menc
por defecto de carga, d
iona este tipo de objetos, pero la definicin del grupo
ividiendo la recuperacin de atributos, en diferentes
fases es una forma de proxy. Varios productos ofrecen esta capacidad
e. expresament
R23.Aprov ersticasderendimientodelosserviciosdedatos
SQLJ acaractersticaestndar.SibienesposibleutilizarSQLnativo
echarcaract
Noesun
JDBC Noesespecificacinestndar,aunqueesposibleaprovecharelSQLnativo
ODMG
Laespecificacinnoincluyereferenciaaesteextremo.
JDO Esunaexigenciaestndar
4.3.3. avanzada
R24.Evolucindelesquema
SQLJ ndelesquema.
Funcionalidad
Noseconsideralaevoluci
JDBC No.
ODMG
Noesunafuncionalidadespecificadaporelestndar.Peromayoritariamente
proporcionanestafuncionalidad.. losproductos
JDO No forma parte del estndar, pero buena parte de los productos tienen en
ideracinestaposibilidad. cons
R25.Versiones
161
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
Noseconsideraestaposibilidad. SQLJ
JDBC Noseconsideraestaposibilidad
ODMG
Noesincluidaestafuncionalidadenelestndar.
JDO No es una funcionalidad estandarizada, pero los productos revisados
consideranestacapacidad
R26.Automatismoactividadesdemapeo
SQLJ No
JDBC No
ODMG
Noesactividadestndar,peroseofreceporpartedelosfabricantes,
aprovechandoODLyOIF.
JDO No. El mapeo no esta conside ar 1.0, si el 2.0. Los productos
mspopularesofrecenestaactividad.
rado en el estnd
R27.Serviciodepersistenciaco e
cio res el ivo es el ac
relacionalesexclusivamente
mofuentesd datos
SQLJ No, es una fun nalidad p ente, pues objet ceso a datos
JDBC Idem.
ODMG
No
JDO No
R28.CoordinacinTransaccional
SQLJ No
JDBC No
ODMG
No
JDO Si,transaccionesdistribuidasenservidorJ2EE
R29.Tratamientodeeventosdeejecucin:Controldeerrores,actividaddepersistencia
SQLJ NocontemplaeventosdelSGBD.ExcepcionesdelSGBD
JDBC Idem
162
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
laBD.
ODMG
Excepioneslevantadaspor
JDO Se atrapan las excepciones del mecanismo de persistencia y se consideran
varioseventosrelativosalciclodevidadelasinstancias.
R30.Medidasderendimiento
SQLJ Si
JDBC Si
ODMG
4.4. Resumen
4.4.1. Rendimiento
l rendimiento de las implementaciones JDO, en aplicaciones interactivas es
inferior, pero en el orden de magnitud que las otras tecnologas en comparacin,
JDBC/S LJ y ODMG. Ante soluciones con modelos de objetos complejos y volmenes
importantes,JDOparecequeaportamejoresrendimiento,quesolucionesdeprogramadas
sobreSQLJoJDBC.
JDBC,lasherramientasORsonlaautnticacompetenciadeJDOparaRDBMS.
JDOnosupleaJDOconaplicacionesconmodelosdeobjetossimples,dedicadasa
presentaryactualizardatos.
Este captulo de comparativa, ha presentado la posicin de JDO frente a las
JDBC/SQLJyODMG,entresdimensionesrendimiento,productividadysatisfaccindelos
requisitosasatisfacerportodasolucindepersistencia.
E
Q
En
Rendimiento
J DO ODMG
Tecnologa J DBC/SQLJ
J DBC OODBMS OODBMS
Esquema persistencia normalizado normalizado
desnormalizado
y serializacin
objetos objetos
Modelo de objetos simple Superior Aceptable Alto Aceptable Aceptable
modelo de objetos complejo Inaceptable Inaceptable Alto Alto Alto
4.4.2. Productividad
es ms productivo que las soluciones JDBC. Las pruebas aqu realizadas
sostienenlatesisdelamayorproductividaddeJDO.Dependiendodeltipodeaplicacinla
reduccin del cdigo alcanza rpidamente el 40%. La valoracin de la diferencia de
productividadconJDBCessuficientepararentabilizarlainversinenJDO,sinconsiderar
otrosfactores.
OQL es menos potente que SQL. Pero con las vistas SQL y el mapping objetos
tablas, s posible aunar la potencia expresiva SQL con la facilidad, simplicidad y
uniformidaddeJDOQLyJDO.OQLtambinesmejorqueJDOQLperopocorelevanteen
elmerca o.
siguiente versin aporta mayor funcionalidad a JDOQL, con proyecciones,
sentenciasyfuncionesconagrupamientos,yotrasmejorasdemandadasporlacomunidad
dedesarrollo.
LainversinenJDO,quedajustificada,porelahorroencostesdemantenimiento.
Es posible financiar la adquisicin de herramientas JDO, obteniendo un retorno de
inversinimportante,segnelescenarioprudenteconsideradoconcostesde30,00/hora
x hombre, se obtiene un ROI de 339,03%. Tambin estn disponibles diversas
implementacioneslibresdepagoparafinescomerciales.JDOesmsproductivoqueJDBC.
JDO
JD
e
d
La
164
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
4.4.3. Verificacindelosrequ
JDO es la tec marco de requisitos
establecidoenelprime nidos.Cabrasealar
que JDO, cuando almacena los objetos sobre un RDBMS, delega en el fabricante la
especifi
isitos
nologa, que ms requisitos satisface del
rcaptuloconuntotal30requisitosde33defi
cacin del mapeo de clases en tablas, que, en mi humilde opinin, debera estar
incluidaenelestndar.
Comparados con JDO y ODMG, JDBC y SQLJ no satisfacen requisitos exigibles
comolasimplicidad,facilidaddeuso,laencapsulacinytodoslosrelativosalmanejode
objetos, incluida la integridad, identidad, ortogonalidad y la transparencia, adems de
otros.
Tabla5NmeroderequisitoscumplidosporSQLJ,JDBC,ODMGyJDO
Nmero de Requisitos cumplidos
SQLJ JDBC ODMG JDO
Obligatorios 22 10 9 20 22
Opcionales 11 2 2 7 8
Total 33 12 11 27 30
4.4.4.
r una
funcionalidadanlogaaloscallbacks.
EsmejorODMGqueJDO?
AlcompararlastecnologasdeSQLJ,JDBC,ODMGyJDO,aprimeravistaparece
JDOnosuperedemasiadoaODMG.DesdeunaperspectivacentradaenJava,diferencias
entre ambos son ms claras y a favor de JDO. Ambos ofrecen persistencia por alcance y
transparencia de datos, es lo que los hace tan iguales. Pero revisando ms a fondo una y
otraespecificacin,aniveltcnicohaydiferenciasimportantes.
En primer lugar, los modelos de objetos, el de ODMG no el modelo Java, es una
adaptacinqueexigeusarciertostiposparalasestructurasdedatos.
A nivel de los interfaces para manejar la persistencia, JDO es ms potente, con
funcionesparaconsultarelestadoyloscallbacks.
ElmodelodeidentidadenODMGeselaportadoporelsistemadebasesdedatos
empleadoyasignarnombresalosobjetos.EnJDOexistenmsposibilidadesparadefinirla
identidad(aplicacin,basesdedatosynodurable).
EnODMGlosobjetospersistentespuedensermanejadosdentrodelatransaccin,
losobjetospersistentesduranenlaJVM,loquelatransaccinqueloscontrola.EnJDOlas
instanciasJDOperduranmsalldelatransaccin,estnligadasasuPersistenteManager,
ysepuedenmodificaralgunasdesuspropiedades.
En JDO se pueden utilizar los callbacks para algunos eventos de la actividad
contra el mecanismo de persistencia. En ODMG, no forma parte del estnda
En OMG los bloqueos se manejan explcitamente, en JDO los bloqueos son
automticos.
EnJDO,lastransaccionespuedenestarcoordinadasporungestordetransacciones
deJ2EE,enODMGnoincluyelafacilidaddetransaccionescoordinadasydistribuidas.
165
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
idaJDOyausentedeODMG.
JDO allana las diferencias entre las implantaciones de los distintos sistemas de
ndoas,JDOesunainversinatractivafrenteainvertirenconocimientoy
licenciasdedistintossistemasdepersistenciadeobjetos.LainversinenJDOparecequees
msint
Quizs la diferencia ms importante en cuanto a Java, es la integracin con EJB,
asum
persistencia,sie
eresantequeODMGyqueJDBCsolo.
166
Capt ul o 5
CONCLUSI ONES
ste es el captulo final. Presenta los inconvenientes y las ventajas de trabajar con
JDO, su situacin actual en el mercado, su evolucin en curso y finalmente, contestar a
algunas de las interrogantes, que surgen tras leer los captulos anteriores: Es JDO una
tecnologa til, es otra ms para persistir? Qu organizaciones necesitan JDO? Por qu
utilizar JDO para RDMBS, en lugar de productos como Cocobase, Castor, jakarta OJB,
Toplink
eleccindeotrasalternativas,durantelaprimaverayelveranodel2004.Momentos
en los O
todas las otras tecnologas con las que ha sido
compar
de los autores de la especificacin
ODMG,
problemadelapersistenciaJavaensuglobalidad,paratodos
losmb
encia, imponiendo pocas cortapisas al
diseo
ara unos es un inconveniente
limitant
oHibernate?TienefuturoJDO?
Mientraseraredactadoestecaptulo,algunodelosestndares,casoJDBC4.0oEJB
2.0, evolucionan para alcanzar ms funcionalidad, dentro del marco de requisitos
establecido en el primer captulo, iniciando nuevos procesos de revisin de sus
especificaciones estndar, que generan importantes debates sobre las virtudes, crticas a
JDOy
racle, IBM y BEA se descolgaban de JDO, al rechazar la revisin de JDO, JSR243
JDO2.0,afavordepromoverlainiciativaparaacometerunsistemadepersistencialigero
dentrodelaprximaEJB3.0.
Sabemos que JDO es posterior a
ada, e incorpora buena parte de la experiencia acumulada, superando algunas de
las limitaciones no resueltas por aquellas. Por ejemplo, la decisin de acceder a RDBMS,
OODBMSoEIS,conunamismainterfaz.Pensemosqueentrelosmiembrosdelcomitde
expertos creador de la especificacin, estn algunos
de herramientas para la persistencia en bases de datos relacionales y verdaderos
expertos en Java, siendo as, a buen seguro, habrn sido consideradas las carencias y
dificultadesquedebanserresueltas,paraalcanzarcomoobjetivolapersistenciaortogonal.
JDO 1.0.1. [51], es la especificacin una interfaz de aplicaciones ambiciosa, que
pretendecubrirlasolucinal
itosdondeJava,pretendeocuparunaposicindestacada:elmundodelosservicios
Web,laspequeasylasgrandesaplicaciones.Suvisineslograrlasolucindepersistencia
ortogonal,aprovechandolaexperienciaacumuladaentecnologasdepersistenciaJava,de
laquetomalosconceptosdepersistenciaporalcanceytransparenciadedatos,quepermite
usarloscuatrosistemasmsusadosparaguardardatos,losRDBMS,losOODBMS,losEIS
y los archivos, y trata conseguir un proceso de desarrollo uniforme adecuado para
pequeas aplicaciones y grandes desarrollos. JDO logra que el cdigo fuente de las clases
del dominio pueda ser independiente de la persist
delasclases.Conello,JDOpermiteelprogramadorcentrarsuesfuerzoenlalgica
del negocio, que es la que proporciona valor, no malgastar esfuerzos en transformar los
objetos en datos. La estrategia acometida para lograr su aceptacin y estandarizacin, es
proponer una solucin sencilla, simple, clara, fcil de usar y aprender, auspiciada con el
procesodeestandarizacindelacomunidadJava,JCP,enuncortoplazodetiempo.
Veamos los inconvenientes y ventajas de trabajar con JDO. Cuando se habla de
inconvenientes y ventajas sobre alguna cuestin como las que nos ocupa, existe una
dificultad esencial, los puntos de vista diferentes. Lo que p
e insalvable, para otros, simplemente es un pequeo escollo fcil de evitar. Las
ventajas se tornan inconvenientes, dependiendo del criterio e inters de quinargumente.
En este sentido, los inconvenientes son comentados para discutir su importancia, si se
167
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
5.1. Inconvenientes
LosprincipalesinconvenientesdeJDOprocedendelimitacionespordecisionesde
diseo y de la falta de claridad en algunos aspectos de su especificacin. Inconvenientes
que, sinduda,son causados porserlaprimera versin. Aunqueno esla primera ocasin,
en la que se intenta conseguir un desarrollo de persistencia ortogonal Java, ODMG para
Java y la rechazada propuesta del proyecto Pjama, son ejemplos de ello. Si es la primera,
quesiguelaestrategiacomn,paraincorporarnuevasfuncionalidadesyserviciosdeJava,
de definir un conjunto de clases e interfaces concretos dentro del proceso JCP. ODMG
dejabaalgunascuestionesabiertaslosfabricantes,quedificultabansuaceptacinyPjama,
proponacambiarellenguajeJava.
La integracin y creacinde serviciosweb J2EE con JDO es, elpunto ms oscuro
delaespecificacin,querequiereunarevisinqueexplique,cmotrabajarconJ2EE,laweb
yJDO.Labibliografadisponiblecompensaestadificultad,enespecialconellibrotitulado
JavaDataObjects,dedosdelosautoresdelaespecificacinCraigRussellyDavidJordan
[16].
Esunasolucingeneralalproblemadelapersistencia,porloquenosebeneficiade
la riqueza y potencia de los sistemas subyacentes concretos, no ofrece la funcionalidad
aportadaporlosRDBMS,OODBMS,uotrossistemasalosquepuedeacceder.
En algunos estilos de programacin sitios Web, aparece el inconveniente de tener
que hacer transitorios objetos persistentes, para una vez modificados, consolidarlos
haciendo que sean persistentes nuevamente. Esto sucede con aplicaciones basadas en
sucesivas peticiones http y en sesiones cliente EJB modificando objetos localmente, que
estn desligados de sus contenedores, bases de datos o EIS. En el primer caso, las
aplicacionesWebconhttp,unaspeticionesobtienenlosobjetosdesdelosserviciosybases
de datos, liberan los recursos, sucesivas peticiones http, modifican estos objetos, para
finalmente, ser consolidados con sus modificaciones en su contenedor original. En las EJB
clientes remotos, necesitan transferir los objetos que modifican, esto requiere hacer
transitorioslasinstanciasJDO,paraserializarlas,paraalfinal,volveradeserializaryhacer
persistentes los objetos transmitidos con sus modificaciones. As, estos tipos de aplicacin
no aprovechan la funcionalidad JDO de transparencia de las modificaciones, que requiere
quelasinstanciasJDOestnenganchadasaunPer si st enceManager .En[16]vemosun
ejemplodeaplicacinwebconJDO,quesufredelaproblemticacitada.Antelademanda
por cubrir situaciones como la descrita, JDO 2.0 incluye los mtodos al efecto, attach y
dettach,quemarcanuncierredepersistenciaparasermanipuladofueradelcontextodeun
gestor de persistencia, manteniendo el control de modificaciones, para su posterior
actualizacinalenganchar(attach)denuevo.
Continuando con los estilos de aplicacin, JDO es menos apropiado para las
aplicacionesintensivasenmanejodedatosrelacionales,quenorequierendeunmodelode
objetosoestrivial.
Hay que tener cuidado cuando se usa, por primera vez, una clase que representa
una clave primaria, asegurando que la clase de objetos persistentes asociados a esa clave
primaria, este previamente cargada y registrada como persistente. Este inconveniente
menor,sesolucionaconlainclusinenladeclaracindelaclaseclave,deunainstruccin
puedenevitar,osi,serncorregidosporlafuncionalidadprevistadelanuevaversinJDO
2.0.
168
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
estticadecreacindeunobjetopersistentedelaclaseasociadaalaclave.En[16]podemos
verdistintosejemplosdeestasolucin.
Otra limitacin, ya mencionada antes en otros captulos, es tener que recuperar
necesariamente los objetos persistentes para su eliminacin. De un lado, esto parece til
para facilitar la implementacin de la integridad referencial. Por otro, es cierto que
habitualmente los programas siguen una secuencia de localizar, mostrar, editar y validar
losobjetos.Enrazndeestasecuenciaydelafacilidadparalaintegridad,seraeleliminar
losobjetosunavezrecuperados.Noobstante,laprximaversinaadeasusinterfaces,un
mtododeborradodirectoenlabasededatossinrecuperacinprevia.
El conjunto estndar de tipos de colecciones, asumidas Collection, Set y HashSet,
podra haber sido ms amplio, incluyendo a las consideradas opcionales, Vector, Map,
ArrayList, HasMap, Hashtable, LinkedList, TreeMap, TreeSet. Clases e interfaces
opcionales,soportadosacriterioalosfabricantes.Estaesunapequealimitacin,queresta
potencia de modelado de clases, para usar de las estructuras de datos ms adecuadas al
caso.
Dejarelsoportedelosatributosdetipoarray,acriteriodelosfabricantes,parece
un pequeo inconveniente, que compromete, otra vez, la potencia de disear clases. Esta
es una limitacin menor, porque se utiliza el tipo Vector habitualmente, que ofrece ms
funcionalidadyseguridadquelosarrays.
Un inconveniente para quienes acostumbran a construir sus diseos a partir de
interfaces,esqueslolasclasespuedenserpersistentes,nolasdefinicionesdeinterfaz,no
obstante, los atributos persistentes si pueden ser referencias a interfaces. La siguiente
versinJDO2.0,permitelapersistenciadeinterfaces.
Lasfuncionesprogramadasparaserinvocadasautomticamenteporelserviciode
persistencia, los callbacks para algunos eventos del ciclo de vida de las instancias
persistentes, parecen pocos y su utilidad para manejar la integridad, no est clara. La
siguiente versin cambia e introduce nuevas signaturas, teniendo presentes ms eventos
delciclodevidapersistente.
JDO no soporta objetos complejos distribuidos entre distintos mecanismos de
persistencia. Un objeto y su cierre de persistencia estn bajo el control de un gestor
PersistenceManager, que solo esta conectado a un mecanismo de persistencia: rdms,
oodbms, ficheros o EIS. Esta limitacin es fcil de superar con un poco de programacin
extra:cuandosealcanzanciertosatributos,quedeotraformaseranreferenciasnormales,
seempleasuvalorparaextraer,desdeotrosPersistenceManagerconectadosamecanismos
diferentes,loscorrespondientesobjetosvinculados.
JDO no permite que objetos remotos sean persistentes. Esta es limitacin
establecida en la especificacin de JDO, los objetos tienen que pertenecer a la JVM, en la
que persisten. Lo normal es que cada JVM, recupere versiones propias de los objetos
almacenadosen la base de datos, cuyaintegridad selogra mediante las transacciones yla
gestin del bloqueo. Esto no es impedimento, para que los objetos JDO sean manejados
remotamentevaRMIoCORBA.UnodelosproductosJDOGenieofreceunservidorJDO,
que proporciona, a JVM remotas, la interaccin con estado compartido de los objetos
persistentesmanejados,sintransferirobjetosentrelasJVM.
JDOQLesmuylimitado,segnfuevistoenuncaptuloanterior.Elhechodetener
que consultar clases concretas y no poder consultas por interfaces directamente, es una
dificultad reseable, que perjudica a los programas que pretenden crear cdigo genrico.
Laprximaversintraeconsigo,mejorasimportantesenlasconsultasconlaposibilidadde
169
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
consultar aquellos objetos cuyas clases implantan cierto interfaz, funciones agregadas
sumarias(sum,avg,min,max,count),msfuncionesmatemticasydemanejodepatrones
decaracteres,yposibilidadesdistintasenelretornodelresultadodelasconsultascomolas
proyecciones,filasenmspuroestiloJDBC[39].
La correspondencia tablaobjetos, es una cuestin que la especificacin JDO 1.0.1.,
no considera, que es crucial cuando se pretende una verdadera compatibilidad entre
productos, y adems, es importante para facilitar su adopcin accediendo a RDBMS. La
versinJDO2.0,normalizalaespecificacindelacorrespondenciaentreclasesytablasen
unesquemarelacional.
Otro inconveniente, ms relacionado con interoperatividad, tiene que ver con la
representacininternalaidentidad,quedecidecadafabricante.Losobjetosmanejadoscon
sendosPersistenceManagerdeproductosdistintos,nopuedenintercambiarlasidentidades
internas manejadas. Esto es, obtener el id interno en uno, para recuperar el mismo objeto
coneseid,enotrogestordeotramarca.Estaesunasituacinpoconormal,integrarenuna
mismaaplicacin,productosdefabricantesdistintosparaaccederalosmismosobjetos.
JDOeslentomsqueJDBCenelaccesoaRDBMS.Notanto,laspruebasrealizadas
muestran que cuanto ms complejo es el modelo de objetos utilizado, mejor adoptar JDO
queprogramarunasolucinespecificaenJDBC.Lostiemposderespuestassonadecuados
frente al esfuerzo de programacin. En las pruebas de rendimiento, para el mejor caso, la
sobrecargadeJDO,rondael4%,quenoparecedemasiado,
Esfalsoquenoseanecesarioconocerotrolenguaje,msconcretamenteSQL.Yase
coment antes, que se puede programar en JDO, sin saber SQL en un buen nmero de
casos, pero, un buen programador debe profundizar cuanto sea necesario, para conseguir
lasolucinmseficazaunproblemadadoaprovechandolosrecursosasualcance.Siperl,
awk o una librera, solucionan un problema de forma ms sencilla y eficaz, Por qu no
usarlos?. Si SQL y el cdigo empotrado en base de datos, sirven para solucionar un
problema,conmenorcomplejidadyesfuerzo,entoncessedebenutilizar.
La sobrecarga que introduce la persistencia, en los objetos transitorios
pertenecientes a las clases persistentes, parece que puede evitar, considerando que en
tiempodeejecucinlosejecutablesdelasclasesoriginalesdebenestaraccesibles.Escierto
que la persistencia JDO introduce una sobrecarga. Un anlisis del cdigo extendido con
persistencia, revela que la sobrecarga al acceder a un atributo de un objeto transitorio,
consiste,comomximo,enlaverificacindedoscondiciones.
Para algunos es un gran inconveniente, que el cdigo ejecutable sea extendido
automticamente con la funcionalidad de persistencia, principalmente, porque oculta los
detalles de la actividad de persistencia, e impide optimizar el cdigo. La especificacin
estndar no exige implantar una extensin del cdigo ejecutable. Los fabricantes pueden
escogersimodificarelbytecodeomodificarelcdigofuente.AlgunodelosproductosJDO
vistos,permitelamodificacindelcdigofuenteampliadoconlapersistencia.Conservarel
cdigo fuente de las clases inalterado, y las ventajas esto conlleva, es la verdadera
contrapartidadeesteinconveniente.Deunaparte,losprincipalesproductosJDO,facilitan
la generacin de bitcoras muy detalladas de la actividad de persistencia, del texto SQL
generado en el acceso RDMBS y proporcionan medidas de rendimiento de cierto nmero
deparmetros.Deotrolado,unodelosprincipiosbsicosdeldesarrollodeprogramas,es
laconfianzaenlacorreccindelsoftwareutilizadoensuconstruccin[19],esporesto,que
utilizamoscompiladoresynoensambladoresparaprogramar.
170
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Figura34PosicindeJDOenlapersistenciajava
JDO evita tener que conocer otros APIS para persistir. La figura anterior ensea
grficamente,comoJDOocultalasdiferenciasexistentesentre,losdistintosmediosusados
para perdurar los objetos, ofreciendo una interfaz nica. Tampoco es menos verdad, que
hay situaciones donde es ms apropiado utilizar JDBC y serializable, por rendimiento o
porquenohacefaltalafuncionalidaddetransparenciadedatosypersistenciaporalcance
deJDO.
JDOesunasolucinglobalalproblemadelapersistenciadeobjetosJava.
Reduce el salto semntico y la complejidad. Consigue centrar el esfuerzo en el
desarrolloenlalgicadenegocio.Desplazaelfocodeatencinsobreelmodelodeobjetos,
relegandoaunsegundoplanoelmodelodatos,puntodepartidaparamuchos.
Una ventaja esencial de JDO es ser un estndar, en el sentido propio del trmino,
porelprocedimientoJCP,sumadurez,yelnmerodeproductosdisponibles.Elhechode
que JDO se ha desarrollado al amparo del Java Comunity Process, es cuando menos, un
granpuntoafavorparallegaraserunestndarreal.Sonvariaslasventajasconsecuencia
deestehechofundamental.
La independencia del fabricante, es una de esas consecuencias primarias de ser
estndar.LosprogramasqueusanlosAPISJDOsonindependientesdelosproductosJDO,
si un programa JDO sigue las recomendaciones de portabilidad, entonces la marca del
productoutilizadoquedaoculta.
La independencia del esquema de persistencia (tablas, definicin de archivos, ),
esunagranventaja.Lacorrespondencia,esquemalgicoyfsico,destinodelosestadosde
los objetos persistentes, puede ser modificada sin necesidad de cambiar los programas.
Permite la evolucin del esquema. Solo los productos que crean la ilusin de persistencia
JDOdebenconocerelmapping.Todoslosproductosvistospermitencomenzarlaejecucin
de las aplicaciones con ficheros descriptores de persistencia con mapping diferentes. En
unaaplicacinJDBC,loscambiosenelesquemaprovocanavalanchasdemodificacionesen
elcdigo.
Independencia y neutralidad del mecanismo de persistencia. El cdigo de los
programas no est ligado a un mecanismo de persistencia concreto. Es una facilidad
remplazar unas bases de datos por otras, permitiendo que la misma aplicacin pueda
almacenar sus objetos en distintas plataformas de almacenamiento de datos RDBMS,
OODBMS,EISyficheros,sinnecesidadderecompilar.Esposibleprogramarsinnecesidad
deconocerelmecanismodepersistencia,nitenerloencuentaelcdigo.Dejarenunfichero
apartelametainformacinnecesariaparalapersistencia,nuevamentecomoantes,consigue
172
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
mayoradaptabilidadyflexibilidadalcambio.Laspruebasderendimientoenestetrabajo,
sonunejemplodeloescrito.
JDOpermiteemplearelmecanismomsconvenientealaproblemticaconcretasin
sernecesariodeprogramarparacadamecanismodepersistenciaexpresamente.
Una posibilidad que alcanza relevancia, al utilizar JDO, es poder utilizar sistemas
de bases de datos orientados a objetos, cuando el modelo relacional no cumpla con los
requerimientosderendimientoyactualizacinnecesarios.AntesdeJDO,osedesarrollaba
parardbms,oparaoodbms.
Dicho ya con otras palabras, pero se debe destacar, que JDO sirve para acceder a
losRDMBS,ocultandolafaltadecorrespondenciaentretablasyobjetos.
EnelsentidoqueJDOesindependientedelosmecanismosdepersistencia,esuna
tecnologadeintegracinideal.
Consecuencia de las ventajas anteriores, es que JDO permite posponer decisiones
deimplementacin,amomentosposterioresdeldesarrollosinperdidadefuncionalidado
eltemoratenerquereconstruirelcdigo.
El lenguaje de consultas JDOQL, tiene una sintaxis java, es simple, pero al mismo
tiempo,unamismaconsultasirveparaaccederasistemasradicalmentediferentes,RDBMS,
OODBMS,ficheros,oEIS.
JDO es fcil de usar y aprender, los ejemplos presentados en este trabajo, as lo
confirman.Elnmerodeelementosqueesnecesariomanejaresrelativamentepequeo,los
patrones de cdigo con persistencia ms comunes, son como los presentados en los
diferenteslistadosvistosenestetrabajo.
En cuanto al rendimiento, JDO logra rendimientos adecuados con modelos de
objetos complejos. Si el destino es un RDBMS, es posible superar el rendimiento de una
solucinJDBCconvencionalconunmodelonormalizadodedatos.
La programacin con JDO es ms productiva, requiere de menos lneas de cdigo
trabajarconpersistenciaJDOqueconotrastecnologas.Enestetrabajosehaalcanzadoun
40% menos de lneas. Menor nmero de lneas repercute en menores costes de
mantenimiento,mscalidadycorreccin.Algunosproductoscomercialesparapersistencia
relacionalcomoCocobase,argumentanquehastael85%delcdigodelasaplicacionesde
negocio, estadedicadoa codificar las operaciones de persistencia. Podemosimaginar que,
si es cierto esto, despreocupados con JDO de codificar la traduccin de objetos en filas, y
viceversa, entonces se dispone de ms tiempo para producir cdigo que aporta valor, las
reglasdelnegocio.
La generacin automtica de cdigo es soportada por todos los productos de
persistencia JDO vistos en la prctica. El cdigo insertado directamente en los ejecutables,
sin trastocar el fuente, facilita uniformidad, reduce las posibilidad de introducir bichos,
reducelapruebaymantenimientodelcdigofuente.Estaesunadeesasventajasqueson
inconveniente,segnquienmire.
Las aplicaciones JDO son adaptables a distintas arquitecturas de aplicacin,
aplicacionesmonolticaslocales,clienteservidor,desplegadasenservidorWeb,enservidor
deaplicaciones.
EldesarrolloconJDOfacilitalaeconomadeescala,enlaproduccindeprogramas
dirigidosasectoresconcretosdelosnegocios,yaque,elmodelodeobjetosconsusreglas
denegocio,permaneceinalteradoeindependiente,deadaptarlasvistasadecuadasparaun
173
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
PDA o un PC, servidor Web o un servidor de aplicaciones. Empleando en cada caso los
sistemas de bases de datos ms apropiados y el producto JDO escogido. El caso de EJB y
sus diferentes modelos de aplicacin, necesita de programar cierto nmero de interfaces
requeridos, enlazando con los servicios ofrecidos por el modelo de objetos. Un mismo
producto terminado para diferentes arquitecturas y plataformas presentes en el mercado
objetivo.Bastapreparardistribucionesdiferentesconficherosdeconfiguracinadecuados
con las propiedades de conexin, controladores de acceso, y mapping, que se adaptan al
entornodeejecucinconcreto,sintenerquemodificarunalneaenlasclasesdeldominio.
JDOesunaalternativasuperioralosEJBentitybeans,complicadosyextensosde
programar,sonunerrortotalreconocidoporlospropiosmiembrosdelgrupodeexpertos
encargadodelestndarEJB.EllugarqueocupanlosEntityBeans,enlaarquitecturaJ2EE,
deservidordeaplicaciones,puedeserocupadoconJDO.EstaeslaopininDavidJordan,
expuestaenjdoCentral.NoesdeextraarquelaespecificacindelnuevoEJB.3.0,pretenda
lograrunmarcodepersistencialigero.
La inversin en JDO es viable y rentable. Es viable porque la propia reduccin de
costesessuficienteparasufragarlaadquisicindelicenciasdeproductosJDO.Esrentable
porquealospreciosactuales,esposiblelograrunaltoretornodelainversin.
Mejora la competitividad de las empresas de desarrollo en Java de aplicaciones
para los negocios, en razn de las ventajas expuestas. No usar JDO, puede significar una
perdidadecompetitividad.
El riesgo de inversin en JDO es manejable y reducido. El nmero de
implementacionesdefuenteabierta,yproductoscomercialesquepermitenunaevaluacin
exhaustiva de sus funcionalidades, permiten analizar la conveniencia y aplicabilidad a
proyectosconcretosconsiguereducirelriesgodeinvertirenJDO.
JDOeslatecnologa,entrelaselegidasenestetrabajo,quesatisfacemsrequisitos
delmarcodefinidoenelprimercaptulo.
Insistir, que a los reiterados los beneficios de una programacin con persistencia
ortogonal, los fabricantes de programas ven mejorada su cadena de valor, y los
consumidores,mejoransuinversinenprogramasaadiendoflexibilidadeindependencia
de sus relaciones con sus proveedores de programacin y de sistemas gestores de datos,
obtienen la capacidad para cambiar de sistemas de gestor de datos o combinar distintos
segnlasnecesidades,sinperdidadelosinversionesprevias,realizadaseneldesarrollode
programasJava.
5.4. Impactoenlatecnologa
Obviamente, como con cualquier otro producto JDO afecta al entorno tecnolgico
delaempresa.GraciasalplanteamientodeserunaAPIms,noimponecambiosradicales
en la tecnologa, que impidan utilizar las tecnologas previas a su incorporacin. Bastar
conincluirenelentornodelibrerasydeejecucin,laslibrerasyejecutablesdelproducto
JDOelegido.
Los scripts de desarrollo tendrn que ser, las tareas ant, maven o make con las
necesarias del postprocesamiento de las clases para la ampliacin de cdigo. Tambin
puede ser necesario incluir, procedimientos para crear, actualizar, revisar y validar los
esquemasdebasesdedatos.
La disponibilidad de la implementacin de referencia, y otros productos JDO de
fuente abierta, permite configurar equipos de desarrollo a coste cero. Es recomendable
utilizar algn producto JDO que permitan automatizar las tareas de mapping, con un
entornogrficomanejable,eintegrableconelentornoIDEJavaelegido.Perodeestaforma,
sepuedenestableceretapasdedesarrolloconresponsabilidadesseparadas,posponiendoa
las fases de produccin ms avanzada, los procesos de mapeo a rdbms, con generacin
scriptssql,creacindelesquemadetablas.
5.5. EconomadeJDO
LosresultadosdeestetrabajosealanpequeoelriesgodeinvertirenJDO,frente
los beneficios que puede reportar su aumento en la productividad y rentabilidad. Si la
reduccin en el nmero de lneas y tiempo de mantenimiento, son tan altos como parece
por este trabajo, entonces, aquellos decididos a programar en Java, con bases de datos,
deberan evaluar el coste de oportunidad y la probable perdida de competitividad por no
invertirenJDO.
Antes de introducir JDO en una organizacin, se tiene que valorar con
detenimientoyprofundidad,loscostesybeneficiosdelcambio.Laideadecomenzarcon
unapequeaylimitadainversin,sobrealgnprototipoquerequierapersistencia,esuna
frmula para comprobar y estimar, la variacin en los costes y beneficios de invertir en
JDO.
Cuanto mayor sea el coste horahombre, dedicado a tareas de mantenimiento
mayoreselretornodelainversinenJDO,segnhasidoexpuesto,encaptulocuatro,con
unoscostesde100,elROIporlareduccincostes,essuperioral1000%,ndicealcanzado
porpocasinversionesfueradelcasinodelaBolsa.
175
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
5.6. Otrosresultadosdeltrabajo
El modelo relacional es adecuado en un buen nmero de casos, pero mirando las
pruebas de rendimiento de este trabajo, vemos que no siempre. Este hecho es la razn
fundamental por la que en los ltimos tiempos, las empresas de motores relacionales, se
apremianporincorporarensussistemas,otrosmodelos,eldeobjetos,elmultidimensional
ylosbasadosenXML.
JDO amplia el mercado de los productores de sistemas de bases de datos
objetuales, que son conscientes de la importancia de la integracin con otros sistemas de
bases de datos, en especial con los relacionales. Los gigantes de la bases de datos
relacionales, tambin, van poco a poco dirigiendo sus premeditados pasos hacia sistemas
objeto relacionales sin discontinuidades entre cdigo y datos, que adems tambin son
capacesdemanipulardatosdeotrossistemas.
En el sitio web de Doug Barry [36] y los sitios web [47] [46], encontramos
referencias que desmienten que los OODBMS son lentos. Hoy por hoy, la mayor base de
datos, pblicamente conocida, es la base de datos Babar, con ms de 890 terabytes,
dispersasenmsdeuncentenardeequiposycasiunmillndearchivos[46].
EnrelacinconloslenguajesdeconsultaylosOODBMS.Lasprincipalesbasesde
datos a las que se ha podido acceder en este trabajo, Versant, ObjectStore, Objectivity,
implantaninterfacesODBC,proyectandolosdatosdelosclasescontenidasenlasmismas,
siguiendo un esquema directo de objetos a tablas, que permite consultar, recuperar e
inclusoactualizar,losdatosasociadosalosobjetosquealmacenan.Facilitandoas,elacceso
en consultas adhoc SQL y la utilizacin de herramientas de consulta y generacin de
informeshabitualesenlosentornosrelacionales.
5.7. Conclusionesltimas
Es momento de responder aquellas preguntas planteadas en la introduccin del
captulo.
EsJDOunatecnologatil,esotramsparapersistir?
Los argumentos expuestos en los apartados previos, los ejemplos ilustrados y las
pruebas efectuadas, son argumentos de peso, que presentan JDO, como una solucin
global, transparente, ortogonal, y escalable al problema de la persistencia de objetos Java.
Es posible acceder a suficientes productos que permiten evaluar su funcionalidad. Es una
tecnologaverdaderamentetil,ylamejordelasvistasenestetrabajo.
QuorganizacionesnecesitanJDO?
Todaslasque necesiten un servicio depersistenciade objetos Java sobreunabase
dedatosrelacionaluotrosistema,especialmente,siempleansistemasgestoresdedatosde
categorasdistintas.LasempresasqueestnevaluandousarunaherramientaOR,deberan
evaluarJDO.
PorquutilizarJDOparaRDMBS,enlugardeproductoscomoCocobase,Castor,
jakartaOJB,ToplinkoHibernate?
Porquetodosestosproductosyotros,solventanexclusivamenteelproblemadela
persistencia sobre RDMBS. Son soluciones parciales a la persistencia de objetos Java,
mientrasque,conJDOesposibleutilizarotrossistemas:OODBMS,archivosoEIS.Porque
los productos mencionados no son estndar, son productos nicos, con APIS y frmulas
176
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
Paraterminar,resumirenpocaspalabraselresultadodeltrabajo:
Los servicios de persistencia deben ser ortogonales, dotados de transparencia de
datos y persistencia por alcance, superando la falta de correspondencia entre objetos y
basesdedatos,dotadadelosrecursosnecesariosparaformaeficazyeficiente,difuminarla
fronteraentrelosprogramasenejecucinylabasededatos,ocultandoalprogramadorlos
entresijosydiferenciasentrelosdiferentesmecanismosdepersistenciaRDBMS,OODBMS,
archivos y sistemas de informacin empresarial. Los servicios de persistencia ayudan a
aumentar el valor en la produccin y mantenimento de programas, con mayor
productividadyrentabilidad.
JDOeslainterfazdeprogramacindeunosserviciosdepersistencia,quelogranel
mejor nivel de compromiso con la funcionalidad exigida por el marco definido en este
trabajo, y reporta importantes beneficios con su adopcin. Los servicios JDO, ofrecen
Persistencia Java Transparente, Neutral, Escalable e Integrable, persistencia transparente
neutral respecto al tipo de sistema de almacenamiento de datos, preparada para afrontar
cargas de trabajo importantes, que se adapta la arquitecturas de aplicacin, actuales se
integraconlosservidoresdeaplicacionesJavaaprovechandosusservicios.
JDOeslamejortecnologadepersistenciadeobjetosJavadelmomento,ao2004.
178
BIBLIOGRAFAREFERENCIADA
[1] M.ATKINSONR.MORRISON,OrthoganallyPersistentObjectSystems.The
VLDB.Journal4(3)pag319401.1995
[2] M.P.ATKINSON,F.BANCILHON,D.J.DEWITT,K.R.DITTRICH,D.
MAIER,ANDS.B.ZDONIK. The object-oriented database system
manifesto. SIGMOD Conference, May 1990.
[3] KENTBECK,ExtremeProgrammingExplained,EmbraceChange,Addison
WesleyOctubre,1999
[4] ELIZABERTINO,LOREZONMARTINO.Sistemasdebasesdedatos
orientadosaobjetos.AddisonWesley1993
[5] GRADYBOOCH,JAMESRUMBAUGH,IVARJACOSON,Ellenguaje
UnificicadodeModelado,AdisonWesley,1999
[6] BROWN,K.yWHITENACK,B.CrossingChasms:APatternLanguagefor
ObjectRDBMSIntegrationdentrodelPatternLanguagesofProgram
DesingVol2,AddisonWesley,1996
[7] R.G.G.CATTELL,ObjectDataManagementAddisonWesley,1994
[8] EDGARF.CODD,TheRelationalModelforDatabaseManagement:Version
2.AddisonWesleyPublishingCo.1990.
[9] C.J.DATE,Introduccinalossistemasdebasesdedatos,AddisonWesley,
1986.
[10] K.R.Dittrich,conferenciaseminariosobrebasededatosorientadasaobjetos,
Murcia,1996
[11] BRUCEECKEL,ThinkingJava.PrenticeHall.
[12] D.R.Edelson,SmartPointers:Theyresmart,buttheyrenopointers,Usenix
c++conference,1992.
[13] ERICHGAMMA,RICHARDHELM,RALPHJONSON,JOHNVLISSIDES,
DesignPatterns,ElementsofReusableObjectOrientedSoftware,Addison
Wesley,1995
[14] CATHERINEHAMON&ARTHURM.KELLER,TwoLevelCachingof
CompositeObjectViewsofRelationalDatabasesInt.Conf.onData
Engineering,Taipei,Taiwan,March1995.
[15] RONJEFFIRIES,ANNANDERSEN,CHETHENDRICKSON,Extreme
ProgrammingInstalled,AddisonWesleyPubCo;Octubre,2000
[16] DAVIDJORDAN,CRAIGRUSSELLJavaDataObjects.ORelly.April2003
[17] HENRYF.KORTH,ABRAHAMSILBERSCHATZ,FundamentosdeBasesde
Datos,MgGrawHill.
[18] GRAIGLARMANUmlyPatrones,PrenticeHall,1999
[19] BERTRANDMEYER,ObjectOrientedSoftwareConstruction2
nd
Editon,
PrenticeHall,1997
[20] SCOTTMEYERS,MoreEffectiveC++,AddisonWesley,1996
[21] NICHOLASNEGROPONTE,BeeingDigital.VintageBooks.1996
[22] OMGPersistentStateServiceSpecification2.0,formal/020906
[23] R.ORFALIANDD.HARKEY,Client/ServerProgrammingwithJavaand
CORBA,JohnWileyandSons,NewYork,1998.Client/ServerProgramming
withJavaandCORBA,2ndEdition,Wiley,Marzo1998
[24] CLAUSP.PRIESE,AflexibleTypeExtensibleObjectRelationalDatabase
WrapperArchitecture
[25] TRYGVEREENSKAUG,WorkingwithObjectsTheOOramSoftware
EngineeringMethodManningPublicationsCompany,1995
[26] RIEL,ARTHURJ.ObjectOrientedDesignHeuristics.AddisonWesley,1996.
179
J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A JuanMrmolCastillo
180
[27] AlejandroRoca,JuanMrmol,CORBASEGUROCORBASLLAplicaciones
deObjetosdistribuidassegurasAsignaturaProgramacinparalas
Comunicaciones,2000
[28] ROGERS.PRESSMAN,SotwareEngineering,McGrawHill3ed.1991
[29] ROBINROOS,JavaDataObjects,AddisonWesleyPublisherLtd.,2002
[30] JAMESRRUMBAUGH,MICHAELR.BLAHA,WILLIAMLORENSEN
FREDERICKEDDY,WILLIAMPREMERLANI,ObjectOrientedModeling
andDesing,PrenticeHall.1990
[31] SZYPERSKY,C.ComponentSoftware:BeyondObjectOriented
Programming.AddisonWesley.Massachusetts.1997.
DocumentosenlaRed
[32] SCOTT W. AMBLER Design of Robust Persistence Layer.
http://www.ambysoft.com/persistenceLayer.html
[33] DR.MALCOLM ATKINSON, Pjama Project
http://www.dcs.gla.ac.uk/pjava/
[34] HTDOUGLAS BARRY, DAVID J ORDAN, ODMG: The Industry Standard for J ava
Object Storage
http://www.objectidentity.com/images/componentstrategies.htmlTH
[35] DOUGLAS BARRY, TORSTEN STANIENDA Solving the Java Object Storage
Problem
http://csdl.computer.org/comp/mags/co/1998/11/ry033abs.htm
[36] HTDouglas Barry Web Services and Service-Oriented Architectures
http://www.service-architecture.com/TH
[37] EMMANUEL CECCHET, Performance Comparison of Middleware Architectures
for Generating Dynamic Web Content
http://sardes.inrialpes.fr/papers/files/03-Cecchet-Middleware.pdf
http://www.cs.rutgers.edu/~rmartin/teaching/spring04/cs553/cecchet02a.p
df 4th ACM/IFIP/USENIX International Middleware Conference, Rio de
Janeiro, Brazil, junio 16-20, 2003
[38] DAVID JORDAN, Comparison Between Java Data Objects (JDO), Serialization
an JDBC for Java Persistence
http://www.jdocentral.com/pdf/DavidJordan_JDOversion_12Mar02.pdf
[39] David Jordan, New Features in the JDO 2.0 Query Language
http://jdocentral.com/JDO_Articles_20040329.html
[40] DAVID JORDAN, The JDO Object Model, David Jordan, Java Report, 6/2001
http://www.objectidentity.com/images/jdo_model82.pdf
[41] HTARTHUR M. KELLER y otros, Architecting Object Applications for High
Performance with Relational Databases, 1995
www.hep.net/chep95/html/papers/p59/p59.ps TH
[42] HTWOLFGANG KELLER, Object/Relational Access Layers A Roadmap, missing
Links and More Patterns
http://www.objectarchitects.de/ObjectArchitects/orpatterns/TH
[43] HTRober D. Poor. Hyphos
http://www.media.mit.edu/pia/Research/Hyphos/,TH
[44] 007 benchmark, http:/www.objectidentity.com/images/007jdo.pdf)
[45] HApache Ant es una herramienta para gestionar tareas de compilacin analoga
makefile
.http://ant.apache.org/H
[46] HTBabar database
http://www.slac.stanford.edu/BFROOT/www/Public/Computing/Databases/inde
x.shtmlTH
JuanMrmolCastillo J JD DO Op pe er rs si is st te en nc ci ia aJ JA AV VA A
181
[47] HTEjemplo alto rendimiento
http://www.fastobjects.com/us/FastObjects_IndustrySolutions_NetworkTelecom
_StreamServe.asp http://www.objectivity.com/Industry/Success/telecom.htmlTH
[48] Gartner Group J ava
H www.gartner.com/webletter/actuate/article2/article2.htmlH
[49] HTJ AVA TECHNOLOGY: THE EARLY YEARS
http://java.sun.com/features/1998/05/birthday.htmlTH
[50] JDO MAX http://www.jdomax.com/c/extranet/home?e_l_id=22
[51] JSR-000012 JavaTM Data Objects Specification (Proposed Final Draft)
HThttp://jcp.org/aboutJava/communityprocess/first/jsr012/index.htmlTH
Implementacin Jdo de Referencia
http://jcp.org/aboutJava/communityprocess/final/jsr012/index2.html
[52] Productos de persistencia
http://www.persistence.com/products/edgextend/index.php,
http://www.objectmatter.com/,
http://www.chimu.com/products/form/index.html,
Cocobase(http://www.thoughtinc.com/cber_index.html),
http://www.secant.com/Products/OI/index.html,
Toplink(HThttp://otn.oracle.com/products/ias/toplink/htdocs/sod.htmlTH)
Hibernate (HThttp://www.hibernate.orgTH)
ObjectRelationalBridge (OJB) HThttp://db.apache.org/ojb/TH
[53] RUBIS Benchmark, HThttp://rubis.objectweb.orgTH
[54] Telefonia global www.iridium.com
http://www.objectivity.com/NewsEvents/Releases/archived_releases/1999/
MotorolaDeliversIridium.html
[55] Torpedo HThttp://www.middlewareresearch.com/torpedo/TH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHH