<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1794-1237</journal-id>
<journal-title><![CDATA[Revista EIA]]></journal-title>
<abbrev-journal-title><![CDATA[Revista EIA]]></abbrev-journal-title>
<issn>1794-1237</issn>
<publisher>
<publisher-name><![CDATA[Escuela de ingenieria de Antioquia]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1794-12372008000100007</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[DIRECTRICES PARA LA CONSTRUCCIÓN DE ARTEFACTOS DE PERSISTENCIA EN EL PROCESO DE DESARROLLO DE SOFTWARE]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Quintero]]></surname>
<given-names><![CDATA[Juan Bernardo]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Hernández]]></surname>
<given-names><![CDATA[Diana María]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Yanza]]></surname>
<given-names><![CDATA[Andrea]]></given-names>
</name>
<xref ref-type="aff" rid="A03"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad EAFIT Universidad de Antioquia ]]></institution>
<addr-line><![CDATA[Medellín ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad de Antioquia  ]]></institution>
<addr-line><![CDATA[Medellín ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A03">
<institution><![CDATA[,Universidad EAFIT  ]]></institution>
<addr-line><![CDATA[Medellín ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>07</month>
<year>2008</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>07</month>
<year>2008</year>
</pub-date>
<numero>9</numero>
<fpage>77</fpage>
<lpage>90</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S1794-12372008000100007&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S1794-12372008000100007&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S1794-12372008000100007&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[El almacenamiento de datos es uno de los procesos que se halla en casi la totalidad de los sistemas de información. El tratamiento que se les da a las bases de datos durante el desarrollo de software resulta un factor determinante para el buen desempeño de un sistema. La acelerada evolución tecnológica y el desarrollo de la industria del software han conducido al surgimiento de diversas estrategias de modelado y numerosas técnicas de acceso a datos. En este trabajo se precisan los referentes conceptuales y prácticos para la construcción de los productos relacionados con las bases de datos, el acceso a estas y el tratamiento que se les da en la industria a los llamados artefactos de persistencia.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Data storage is a process required in almost every information system nowadays; the treatment given to databases during the software development can be a determining factor in order to achieve good performance of a resulting system. The accelerated technological evolution and the progress of the software enterprises have given rise to diverse modeling strategies and several data access techniques. This work explains the practical and conceptual references for the construction of products related to databases, the access techniques to them and the handling that so-called persistence artifacts have at an industrial level.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[sistema gestor de bases de datos]]></kwd>
<kwd lng="es"><![CDATA[modelo entidad-relación]]></kwd>
<kwd lng="es"><![CDATA[mapeo objeto-relacional]]></kwd>
<kwd lng="es"><![CDATA[patrones]]></kwd>
<kwd lng="es"><![CDATA[frameworks]]></kwd>
<kwd lng="en"><![CDATA[manager system]]></kwd>
<kwd lng="en"><![CDATA[entity-relationship model]]></kwd>
<kwd lng="en"><![CDATA[object-relational mapping]]></kwd>
<kwd lng="en"><![CDATA[patterns]]></kwd>
<kwd lng="en"><![CDATA[frameworks]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="center"><font size="4" face="Verdana"><b>DIRECTRICES PARA LA CONSTRUCCI&Oacute;N DE   ARTEFACTOS DE PERSISTENCIA EN EL PROCESO DE DESARROLLO DE SOFTWARE</b></font></p> <font face="Verdana"size="2">     <p align="center">&nbsp;</p>     <p><b>  Juan Bernardo Quintero*, Diana Mar&iacute;a Hern&aacute;ndez**,   Andrea Yanza***</b></p>     <p>* Mag&iacute;ster en Ingenier&iacute;a Inform&aacute;tica, Universidad EAFIT. Jefe de Sistemas, ABC-Flex Ltda., Medell&iacute;n, Colombia. Docente de C&aacute;tedra, Universidad de Antioquia y Universidad EAFIT.<a href="mailto:jquinte1@eafit.edu.co"> jquinte1@eafit.edu.co</a></p>     <p>  ** Ingeniera de Sistemas, Universidad de Antioquia. Gerente General, ABC-Flex Ltda. Medell&iacute;n, Colombia. <a href="mailto:dianahdez@%20abcflex.net">dianahdez@   abcflex.net</a></p>     <p>  *** Mag&iacute;ster (c) en Ingenier&iacute;a Inform&aacute;tica y Docente de C&aacute;tedra, Universidad EAFIT. Medell&iacute;n, Colombia. Integrante   del Grupo de Investigaci&oacute;n en Ingenier&iacute;a de Software. <a href="mailto:ayanza@eafit.edu.co">ayanza@eafit.edu.co</a></p>     <p>  Art&iacute;culo recibido 26-III-2008. Aprobado 24-VII-2008</p>     <p>  Discusi&oacute;n abierta hasta diciembre de 2008</p> <hr /> </font>     <p><font size="3" face="Verdana"><b>  RESUMEN</b></font></p> <font face="Verdana"size="2">     <p>  El almacenamiento de datos es uno de los procesos que se halla en casi la totalidad de los sistemas   de informaci&oacute;n. El tratamiento que se les da a las bases de datos durante el desarrollo de software resulta   un factor determinante para el buen desempe&ntilde;o de un sistema. La acelerada evoluci&oacute;n tecnol&oacute;gica y el   desarrollo de la industria del software han conducido al surgimiento de diversas estrategias de modelado   y numerosas t&eacute;cnicas de acceso a datos. En este trabajo se precisan los referentes conceptuales y pr&aacute;cticos   para la construcci&oacute;n de los productos relacionados con las bases de datos, el acceso a estas y el tratamiento   que se les da en la industria a los llamados artefactos de persistencia.</p> </font>     ]]></body>
<body><![CDATA[<p>  <font size="2" face="Verdana"><b><font size="3">PALABRAS CLAVE: </font></b>sistema gestor de bases de datos; modelo entidad-relaci&oacute;n; mapeo objeto-relacional;   patrones; frameworks.</font></p> <font face="Verdana"size="2"> <hr size="1" /> </font>     <p>  <font size="3" face="Verdana"><b>ABSTRACT</b></font></p> <font face="Verdana"size="2">     <p>  Data storage is a process required in almost every information system nowadays; the treatment given   to databases during the software development can be a determining factor in order to achieve good performance   of a resulting system. The accelerated technological evolution and the progress of the software enterprises have given rise to diverse modeling strategies and several data access techniques. This work   explains the practical and conceptual references for the construction of products related to databases, the   access techniques to them and the handling that so-called persistence artifacts have at an industrial level.</p> </font>     <p>  <font size="2" face="Verdana"><b><font size="3">KEY WORDS: </font></b>database manager system, entity-relationship model, object-relational mapping, patterns,   frameworks.</font></p> <hr />     <p><font size="3" face="Verdana"><b> 1. INTRODUCCI&Oacute;N</b></font></p> <font face="Verdana"size="2">     <p>  Las bases de datos han desempe&ntilde;ado papel   protag&oacute;nico en el proceso de desarrollo de software,   por esto en la actualidad se encuentra un n&uacute;mero   considerable de t&eacute;cnicas de modelado, patrones,   frameworks y librer&iacute;as para trabajar lo concerniente   al almacenamiento de datos. Los artefactos de   persistencia se refieren a los productos construidos   durante el proceso de desarrollo de software, permitiendo   a los sistemas de informaci&oacute;n trascender   los datos en el tiempo, almacen&aacute;ndolos en bases de datos o archivos.</p>     <p>  Durante las d&eacute;cadas de los setenta y ochenta   se dio un considerable fortalecimiento de los motores   de bases de datos, tambi&eacute;n llamados SGBD (sistema   gestor de bases de datos) o DBMS (DataBase Management   System), apareci&oacute; por entonces el llamado   paradigma relacional, que puso los datos como el   elemento central del proceso de desarrollo de software   [1], fue cuando los SGBD evolucionaron hasta   ser llamados SGBD relacionales (RDBMS: Relational DataBase Management System).</p>     <p>  Sin embargo, en los noventa, el auge de la   programaci&oacute;n orientada por objetos y el surgimiento   de los frameworks de mapeo objeto-relacional ocasion&oacute;   que los desarrolladores de software volcaran su   atenci&oacute;n sobre otros elementos como los objetos, los   componentes o los frameworks, los cuales por medio   de diferentes estrategias les facilitaban considerablemente   las labores, al punto de llevar a casi ignorar la   existencia del SGBD. Los artefactos de persistencia se   convirtieron en productos que solo eran revisados o   modificados cuando el aumento en los vol&uacute;menes de   informaci&oacute;n y el acceso concurrente a ellos causaban problemas de rendimiento.</p>     <p>  Para concretar la gu&iacute;a planteada en este art&iacute;culo,   se abordan algunos de los principales conceptos   del cuerpo del conocimiento de la ingenier&iacute;a de software:   notaci&oacute;n, metodolog&iacute;a, t&eacute;cnica y herramientas.   Las notaciones para el modelado de datos se trabajan   en la secci&oacute;n 2, lo referente a la metodolog&iacute;a se trata   en la secci&oacute;n 3, las t&eacute;cnicas de acceso a datos se abordan   en la secci&oacute;n 4, las herramientas m&aacute;s populares   para el desarrollo con bases de datos se revisan en la   secci&oacute;n 5, y finalmente se muestran las conclusiones y trabajos futuros en la secci&oacute;n 6.</p>     <p>  Para ilustrar esta gu&iacute;a, se presenta un caso de   aplicaci&oacute;n que trata el desarrollo de un portal tem&aacute;tico   llamado Aldea Contable, aplicaci&oacute;n web para   apoyar el proceso docente del Departamento de Ciencias Contables de la Universidad de Antioquia.</p> </font>     ]]></body>
<body><![CDATA[<p><font size="3" face="Verdana"><b>  2. NOTACIONES PARA EL MODELADO DE DATOS</b></font></p> <font face="Verdana"size="2">     <p>  Para construir modelos de datos existen diversas   notaciones, las cuales le dan diferente relevancia   a cada uno de los elementos que se pueden representar   en los modelos. Esta situaci&oacute;n hace que una   notaci&oacute;n espec&iacute;fica sea m&aacute;s &uacute;til en un contexto que   en otro, de acuerdo con las condiciones particulares del proyecto o del grupo de desarrollo.</p>     <p>  Aunque en la industria la notaci&oacute;n que se   utilice para modelar las bases de datos no es un   factor que est&eacute; determinado por las condiciones del   proyecto o del grupo de desarrollo, utilizar una u   otra notaci&oacute;n puede tener un impacto considerable.   A continuaci&oacute;n se enuncian los principales aspectos   de las siete notaciones m&aacute;s usadas en el modelado   de bases de datos.</p> </font>    <p><font size="2">-</font> <font size="2" face="Verdana"><b>Notaci&oacute;n Chen: </b>esta fue la notaci&oacute;n que se   utiliz&oacute; inicialmente para la representaci&oacute;n de   bases de datos. Fue planteada por Peter Chen   en los setenta y les da un especial &eacute;nfasis a las   relaciones entre las entidades represent&aacute;ndolas   con un rombo en el que se pone el nombre de la relaci&oacute;n [2].</font></p> <font face="Verdana"size="2"></font>    <p><font size="2" face="Verdana"><b>- Notaci&oacute;n Barker:</b> fue adoptada por Oracle Corporation   en sus productos de modelado de datos;   goza de mucha popularidad y sirve de referente   en la metodolog&iacute;a planteada en CASE*Method [3].</font></p> <font face="Verdana"size="2"></font>    <p><font size="2" face="Verdana"><b>- IE </b>(Information Engineering): desarrollada inicialmente   por Clive Finkelstein quien luego la refin&oacute;   con el apoyo de James Martin; aunque es clara e   intuitiva, sirve solo para modelos de alto nivel de   abstracci&oacute;n (modelos l&oacute;gicos), pues no permite modelar los atributos de las entidades [4].</font></p> <font face="Verdana"size="2"></font>    <p><font size="2">-</font> <font size="2" face="Verdana"><b>IDEF1X</b> (Data Modeling): desarrollada por el   Departamento de Defensa de los Estados Unidos   dentro de una familia de est&aacute;ndares llamada IDEF   (Integrated DEFinition Method); no obstante que   fue planteada para representar modelos f&iacute;sicos,   err&oacute;neamente se usa en modelos l&oacute;gicos; para   este tipo de modelos es m&aacute;s apropiada la notaci&oacute;n de IDEF1 llamada Information Modeling [5].</font></p> <font face="Verdana"size="2"></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b>ORM</b> (Object Role Modeling): formalizada por   Terry Halpin, es una notaci&oacute;n muy intuitiva que   se centra en representar el papel que desempe&ntilde;a   una entidad con respecto a las dem&aacute;s entidades   con las que est&aacute; relacionada, su desventaja radica   en que los modelos crecen en tama&ntilde;o muy r&aacute;pidamente [6].</font></p>     <p>-<font size="2" face="Verdana"><b> UML </b>(Unified Modeling Language): si bien es un   lenguaje de modelado objetual, se puede extender   a trav&eacute;s de perfiles para soportar otro tipo   de modelos [7]. En la actualidad existen varias   propuestas e iniciativas para perfiles de modelado de datos con UML [8-10].</font></p>      <p>  <font size="2" face="Verdana"><b>- XML</b> (Extensible Markup Language): m&aacute;s que una   notaci&oacute;n, XML es un metalenguaje extensible de    etiquetas desarrollado por el W3C (World Wide Web Consortium). Permite describir la gram&aacute;tica de lenguajes espec&iacute;ficos por medio de la definici&oacute;n de sus &ldquo;metadatos&rdquo;, expresando las reglas que los rigen en un documento de definici&oacute;n de tipos (*.DTD) o un archivo de definici&oacute;n del esquema XML (*.XSD). Los datos deben cumplir con las reglas definidas y se almacenan acompa&ntilde;ados de etiquetas en el mismo archivo o en un archivo diferente (por lo general *.XML) [11].</font></p> <font face="Verdana"size="2">    ]]></body>
<body><![CDATA[<p>  Seg&uacute;n las recomendaciones del estudio comparativo   de Hay en [12], la notaci&oacute;n m&aacute;s apropiada   para el an&aacute;lisis es Barker, mientras que en el dise&ntilde;o   resulta de gran utilidad usar UML; sin embargo, en   algunos casos la notaci&oacute;n estar&aacute; determinada por   las herramientas disponibles, las condiciones espec&iacute;ficas   del grupo de desarrollo o las particularidades   del proyecto. En la<a href="img/revistas/eia/n9/n9a07tab1.gif"> tabla 1</a> se presenta un cuadro   comparativo que muestra las diferencias entre los   principales elementos de las notaciones m&aacute;s utilizadas   por herramientas de modelado de datos en la actualidad.</p>      <p><font size="3" face="Verdana"><b> 3. LOS MODELOS DE DATOS EN LAS METODOLOG&Iacute;AS DE DESARROLLO</b></font></p> <font face="Verdana"size="2">     <p>  Un factor determinante para el tratamiento de   los artefactos de persistencia es el nivel de abstracci&oacute;n   de los modelos de datos. Seg&uacute;n Ambler [13],   existen tres estilos para la construcci&oacute;n de modelos relacionados con los datos.</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Modelo conceptual: tambi&eacute;n llamado modelo del   dominio, sirve para representar elementos del   espacio del problema, frecuentemente antecede   o reemplaza al modelo l&oacute;gico. Se utiliza en las etapas previas al an&aacute;lisis.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Modelo l&oacute;gico: sirve para analizar los conceptos   del dominio y las relaciones entre &eacute;stos. Se utiliza en la etapa de an&aacute;lisis.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Modelo f&iacute;sico: sirve para representar los elementos   que se dispondr&aacute;n en el SGBD o esquema interno de la base de datos. Se utiliza en la etapa de   dise&ntilde;o.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Sin embargo, en el Proceso Unificado de Desarrollo   (RUP: Rational Unified Process) [14] los modelos   de datos se reducen a un artefacto que se construye en el flujo de trabajo del an&aacute;lisis y dise&ntilde;o.</p>     <p>  En propuestas como las planteadas en CADM   (CASE Applications Development Method) [15], los   modelos de datos tienen papel protag&oacute;nico, convirti&eacute;ndose   en artefactos que rigen el proceso de   desarrollo y la generaci&oacute;n de c&oacute;digo. La metodolog&iacute;a   presentada en CADM se deriva del m&eacute;todo CASE   (CASE* Method) [3] y plantea diez etapas de las que   se destacan el an&aacute;lisis, el dise&ntilde;o y la construcci&oacute;n.   La notaci&oacute;n usada en CADM es una adaptaci&oacute;n de   la notaci&oacute;n Barker que posibilita la diferenciaci&oacute;n de los modelos l&oacute;gicos y f&iacute;sicos.</p>     <p><b> 3.1 An&aacute;lisis</b></p>     <p>  En el an&aacute;lisis se construyen artefactos cercanos   al dominio del problema; tienen car&aacute;cter declarativo,   centr&aacute;ndose en &ldquo;qu&eacute;&rdquo; se pretende hacer. El principal   artefacto del an&aacute;lisis en CADM es el modelo   Entidad-Relaci&oacute;n (diagrama E-R), que se refiere a un   modelo l&oacute;gico. Para la construcci&oacute;n de un diagrama   E-R, se explora gramaticalmente la narrativa del   negocio, buscando elementos propios del modelo de la siguiente manera:</p> </font></font>    ]]></body>
<body><![CDATA[<p><font size="2">-</font> <font size="2" face="Verdana"><b>Entidades. </b>Se refieren a los conceptos, personas,   objetos o cosas de los cuales el sistema necesite   guardar informaci&oacute;n. Las forman los sustantivos   m&aacute;s relevantes encontrados en la narrativa del   negocio. Por tratarse de un concepto o abstracci&oacute;n,   suele utilizarse un sustantivo en singular   para nombrar la entidad. Se simbolizan usando un rect&aacute;ngulo con los bordes redondeados.</font></p>     <p><font size="2">-</font><font size="2" face="Verdana"><b> Atributos. </b>Constituyen cada una de las caracter&iacute;sticas   asociadas a una entidad; gramaticalmente   los atributos se buscan en los adjetivos que califican   a las entidades. Se simbolizan colocando   su nombre dentro del rect&aacute;ngulo de la respectiva   entidad. Los tipos de atributos son los siguientes:</font></p> <font face="Verdana"size="2">    <p>- <b>Claves primarias.</b> Identificadores que hacen   que una presencia de la entidad sea diferente de las dem&aacute;s. Se simbolizan con el signo n&uacute;mero.</p>     <p>- <b>Obligatorios.</b> Se simbolizan con un c&iacute;rculo relleno o con un asterisco.</p>     <p>- <b>Opcionales.</b> Se simbolizan con un c&iacute;rculo hueco o con un espacio en blanco.</p>     <p>- <b>Claves candidatas.</b> Son aquellas que sirven de alternativa a la clave primaria.</p> </font>    <p>-<font size="2" face="Verdana"><b> Relaciones.</b> Muestran la forma en que dos entidades   se asocian; gramaticalmente las relaciones   se pueden encontrar dentro de la narrativa del   negocio como verbos conjugados, preposiciones,   conjunciones u otros elementos que unen dos de   los sustantivos que representan entidades. Las relaciones   se representan como l&iacute;neas que unen las   dos entidades implicadas y tienen principalmente dos caracter&iacute;sticas:</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>- <b>Multiplicidad.</b> Se refiere al n&uacute;mero de presencias   de una entidad que puede tener la otra,   se lee llegando y se representa con una l&iacute;nea   simple para denotar uno, o con tres l&iacute;neas en   forma de pata de gallo (crow&rsquo;s foot en ingl&eacute;s) para denotar muchos.</p>     <p>- <b>Obligatoriedad.</b> Determina si ante una presencia   de una entidad deber&aacute; o podr&aacute; haber   presencias de la otra entidad, se lee saliendo   y se representa con una l&iacute;nea continua para   denotar obligatoriedad o con una l&iacute;nea punteada para denotar que es opcional.</p>     <p>  En el caso de aplicaci&oacute;n, la Aldea Contable   dispone de nueve m&oacute;dulos para apoyar los diferentes   frentes del proceso docente; por limitaciones de   espacio, se ilustra solo el uso de los artefactos de   persistencia en el m&oacute;dulo &ldquo;Revista Contadur&iacute;a&rdquo;, que   corresponde al apoyo virtual de una publicaci&oacute;n   impresa que se entrega peri&oacute;dicamente en el Departamento   de Ciencias Contables de la Universidad de Antioquia.</p>     ]]></body>
<body><![CDATA[<p>  El diagrama E-R de la<a href="img/revistas/eia/n9/n9a07fig1.gif"> figura 1</a> muestra las entidades   y relaciones del m&oacute;dulo &ldquo;Revista Contadur&iacute;a&rdquo;.   En este diagrama se observa como la relaci&oacute;n de   muchos a muchos entre las entidades ARTICULO y   AUTOR presenta un conflicto de p&eacute;rdida de informaci&oacute;n   que necesita ser resuelto con el surgimiento   de la entidad de intersecci&oacute;n AUTORIA_ARTICULO;   en esta entidad se ubican los atributos ROL y POSICION,   que en caso de situarse en cualquiera de las   dos entidades involucradas en la relaci&oacute;n ocurrir&iacute;an problemas de multiplicidad. Un caso contrario se   presenta en la relaci&oacute;n de muchos a muchos entre   las entidades ARTICULO y TEMA, que no necesita   ser tratada como un conflicto, pues no tienen informaci&oacute;n   propia que experimente problemas de   multiplicidad.</p>      <p>  La entidad AUTORIA_ARTICULO se denomina   d&eacute;bil con respecto a NUMERO y ARTICULO, pues su   clave primaria se supone compuesta por las claves   de las otras dos entidades y no necesita ser representada   dentro de dicha entidad. Esta situaci&oacute;n se   representa con una l&iacute;nea cruzada en la relaci&oacute;n del   lado de la entidad d&eacute;bil; este tipo de relaciones se llaman vinculantes (Identifying Relationship).</p>     <p><b> 3.2 Dise&ntilde;o</b></p>     <p>  En el dise&ntilde;o se construyen artefactos cercanos   a la soluci&oacute;n o a los objetos del SGBD, tiene car&aacute;cter   imperativo, centr&aacute;ndose en el &ldquo;c&oacute;mo&rdquo; de la soluci&oacute;n.   El principal artefacto del dise&ntilde;o en CADM es el   llamado esquema de datos o modelo del servidor,   que se refiere a un modelo f&iacute;sico. Un esquema de   datos se construye a partir de la transformaci&oacute;n del   diagrama E-R, teniendo en cuenta las siguientes consideraciones:</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b> Tablas.</b> Cada una de las entidades modeladas   en el an&aacute;lisis representa una tabla en el dise&ntilde;o.   Por tratarse de la necesidad de almacenamiento,   su nombre suele ser el sustantivo que viene   del an&aacute;lisis pero en plural, pues en una tabla se   almacenan muchos registros. Se simbolizan con un rect&aacute;ngulo con los bordes rectos.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b> Columnas. </b>Cada uno de los atributos del   diagrama E-R se transforma en una columna   del esquema de datos; la columna conserva las   caracter&iacute;sticas funcionales que ten&iacute;a el atributo,   salvo que algunas veces se le adiciona el tipo de dato.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font> <font size="2" face="Verdana"><b>Claves for&aacute;neas. </b>Cada relaci&oacute;n en el diagrama   E-R genera una clave for&aacute;nea en el esquema de   datos y el surgimiento de una o varias columnas   en la tabla del extremo de la relaci&oacute;n con multiplicidad   de muchos. El n&uacute;mero de columnas   que surgen est&aacute; determinado por el n&uacute;mero de atributos de la clave primaria de la otra tabla.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Es importante recalcar que las columnas   que surgen en el dise&ntilde;o, producto de las relaciones   entre entidades en el an&aacute;lisis solo se representan   en los modelos de datos y no se representan en los   diagramas E-R, pues en el an&aacute;lisis se acepta que las   relaciones tienen identidad propia y por ellas viaja informaci&oacute;n.</p>     <p>  El esquema de datos de la <a href="img/revistas/eia/n9/n9a07fig2.gif">figura 2</a> muestra el   modelo f&iacute;sico de la base de datos del caso de aplicaci&oacute;n.   En este diagrama se observa la tabla TEMARIO_   ARTICULOS resolviendo la relaci&oacute;n de muchos   a muchos que se presentaba entre las entidades que   sirven de base para las tablas TEMAS y ARTICULOS.   En el caso de aplicaci&oacute;n, todas las claves for&aacute;neas   transfieren la clave primaria de la tabla con multiplicidad   uno a la tabla con multiplicidad muchos, exceptuando   la clave for&aacute;nea ART_NUM_FK, en la cual   la columna NUMERO pasa a la tabla ARTICULOS,   pero no como clave primaria, ya que no proviene de relaciones vinculantes como las dem&aacute;s.</p>      <p><b> 3.3 Construcci&oacute;n</b></p>     ]]></body>
<body><![CDATA[<p>  El principal artefacto de la construcci&oacute;n en   CADM lo constituyen los scripts de creaci&oacute;n de los   objetos de la base de datos. Estos scripts se llaman   DDL (Data Definition Language) y se construyen   a partir de la transformaci&oacute;n del esquema de datos, teniendo en cuenta las siguientes consideraciones:</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Cada tabla se convierte en una sentencia &ldquo;CREATE   TABLE&hellip;&rdquo; que debe tener una definici&oacute;n de columna,   con su respectivo tipo y restricciones, por cada una de las columnas del esquema de datos.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Cada clave primaria se convierte en una cl&aacute;usula   &ldquo;&hellip; PRIMARY KEY&hellip;&rdquo; en la creaci&oacute;n o alteraci&oacute;n   de tabla, y los valores de esta columna no podr&aacute;n   repetirse. En caso de que la clave sea compuesta, el orden de las columnas suele definir el orden de la columna en el &iacute;ndice asociado.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Cada clave for&aacute;nea se convierte en una cl&aacute;usula   &ldquo;&hellip; REFERENCES&hellip;&rdquo; en la creaci&oacute;n o alteraci&oacute;n   de tabla de la clave for&aacute;nea, hacia la tabla de la   clave primaria que se referencia. Es importante   recalcar que solo se pueden referenciar columnas   o combinaciones de ellas que sean &uacute;nicas (PRIMARY KEY o UNIQUE).</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Cada objeto creado en la base de datos debe   considerar el c&aacute;lculo de espacios de almacenamiento,   para evitar problemas de rendimiento en   el acceso a datos. Esta pr&aacute;ctica se llama sizing de   esquema, y los c&aacute;lculos que se realizan dependen   en gran medida de las caracter&iacute;sticas espec&iacute;ficas del SGBD utilizado.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Si en lugar de un motor relacional, se cuenta   con un SGBD orientado por objetos, se puede   utilizar UML como t&eacute;cnica de modelado de datos,   teniendo en cuenta ciertas restricciones para que   cada elemento en el modelo encuentre correspondencia   directa en elementos de las bases de datos [16].</p> </font>     <p><font size="3" face="Verdana"><b> 4. T&Eacute;CNICAS PARA EL ACCESO DE DATOS</b></font></p> <font face="Verdana"size="2">     <p>  A continuaci&oacute;n se ilustran los mecanismos   de acceso a datos como las API, librer&iacute;as de abstracci&oacute;n,   el patr&oacute;n DAO y las t&eacute;cnicas de mapeo objeto-relacional.</p>     <p><b>  4.1 API (Application Programming   Interface)</b></p>     <p>  Una API (interfaz de programaci&oacute;n de aplicaciones)   es un conjunto de rutinas y especificaciones   de comunicaci&oacute;n entre componentes de software.   Existen varios tipos de API: nativas de un sistema   operativo como ODBC en Windows, nativas de un   lenguaje como JDBC con Java y nativas de un SGBD   como OCI con Oracle. Enseguida se presentan algunas   de las API de mayor utilizaci&oacute;n para el acceso a bases de datos.</p> </font></font>    ]]></body>
<body><![CDATA[<p><font size="2">-</font> <font size="2" face="Verdana"><b>ODBC</b> (Open Data Base Connectivity). Es un   est&aacute;ndar planteado por Microsoft cuyo objetivo   es hacer posible el acceso a cualquier dato de   cualquier aplicaci&oacute;n, sin importar qu&eacute; SGBD lo   almacene; ODBC logra esto al insertar una capa   intermedia llamada manejador (Driver) de bases de datos, entre la aplicaci&oacute;n y el SGBD; el prop&oacute;sito   de esta capa es traducir las consultas de   datos de la aplicaci&oacute;n en comandos que el SGBD   pueda interpretar. Desde la versi&oacute;n 2.0 el est&aacute;ndar   soporta SQL (Structured Query Language) [17].   Para conectarse a la base de datos se crea en el   sistema operativo un origen de datos (DSN: Data   Source Name) dentro del cual se definen los par&aacute;metros,   la ruta y las caracter&iacute;sticas de la conexi&oacute;n,   seg&uacute;n las especificaciones del fabricante.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font> <font size="2" face="Verdana"><b>JDBC</b> (Java Data Base Connectivity). Permite   la ejecuci&oacute;n de sentencias sobre bases de datos   desde Java, independiente del sistema operativo   donde se est&eacute; ejecutando o del SGBD utilizado   [18]. Provee servicios para acceder a una base de   datos utilizando SQL como lenguaje de consulta y manipulaci&oacute;n de datos.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Un manejador (Driver) de conexi&oacute;n hacia un   SGBD espec&iacute;fico es un conjunto de clases que   implementan las interfaces Java definidas en   JDBC y que utilizan los m&eacute;todos de registro para   definir un localizador de una base de datos (URL:   Uniform Resource Locator). En la ejecuci&oacute;n, el   programa debe correr con la librer&iacute;a apropiada   para su SGBD y accede a &eacute;ste estableciendo una   conexi&oacute;n y utilizando el localizador a la base de datos con los par&aacute;metros espec&iacute;ficos.</p>     <p>  La API de persistencia recientemente desarrollada   para la plataforma Java EE se llama JPA   (Java Persistence API), uno de cuyos principales   objetivos es unificar la manera en que funcionan las utilidades de mapeo objeto-relacional.</p> </font></font>    <p><font size="2">-</font> <font size="2" face="Verdana"><b>OCI</b> (Oracle Call Interface). Permite ejecutar   sentencias SQL para la consulta y manipulaci&oacute;n   de datos en un SGBD Oracle, desde un lenguaje   de programaci&oacute;n como C o PHP [19]. Las librer&iacute;as   OCI no necesitan ser recompiladas para   su utilizaci&oacute;n y se tratan de igual forma que las   aplicaciones que no son para bases de datos. Las funciones de OCI son:</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>- Hacer un an&aacute;lisis sint&aacute;ctico de las sentencias SQL.</p>     <p>- Abrir un cursor (espacio de memoria para guardar la respuesta a una consulta).</p>     <p>- Introducir variables del cliente en la memoria compartida del servidor.</p>     <p>- Ejecutar las sentencias SQL en el espacio de memoria del cursor.</p>     <p>- Descargar en la aplicaci&oacute;n cliente los registros de datos solicitados.</p>     ]]></body>
<body><![CDATA[<p>- Cerrar los cursores y, de esta forma, liberar los   espacios de memoria reservados.</p>     <p><b> 4.2 Librer&iacute;as de abstracci&oacute;n   de acceso a datos</b></p>     <p>  Adicionalmente a los servicios de una API, una   librer&iacute;a de abstracci&oacute;n provee un modelo de componentes   que enmascara la complejidad del acceso a   datos, permite usar instrucciones de alto nivel y facilita al desarrollador cambiar el origen de los datos.</p>     <p>  Las librer&iacute;as de abstracci&oacute;n est&aacute;n determinadas   por el lenguaje de programaci&oacute;n que utilicen,   por esto una API como JDBC tambi&eacute;n encaja dentro   de esta categor&iacute;a; pero teniendo en cuenta el bajo   nivel de sus instrucciones, se enmarc&oacute; dentro de la categor&iacute;a de las API.</p>     <p>  A continuaci&oacute;n se muestran las librer&iacute;as de   abstracci&oacute;n de acceso a datos m&aacute;s usadas en los lenguajes de Microsoft y en PHP.</p> </font></font>     <p><font size="2">- </font><font size="2" face="Verdana"><b>Microsoft. </b>Para los diferentes lenguajes de   programaci&oacute;n usados por las plataformas de Microsoft existen las siguientes alternativas [20]:</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>- <b>Microsoft DAO.</b> Los objetos de acceso a datos   de Microsoft constituyeron un modelo de   componentes, usado por excelencia para el acceso a bases de datos Microsoft Access.</p>     <p>- <b>RDO.</b> Los objetos de datos remotos permiten   el desarrollo de interfaces que interact&uacute;an   directamente con or&iacute;genes de datos ODBC   en m&aacute;quinas remotas.</p>     <p>- <b>UDL</b> (Universal Data Link). Son archivos que   proveen una interfaz com&uacute;n para especificar   los atributos de una conexi&oacute;n basada en ODBC o en OLE DB.</p>     <p>- <b>ADO</b>, ADO.NET (ActiveX Data Objects). Son   interfaces de programaci&oacute;n de alto nivel para   or&iacute;genes de datos soportados por ODBC y OLE DB.</p> </font></font>    ]]></body>
<body><![CDATA[<p><font size="2">-</font> <font size="2" face="Verdana"><b>PHP</b>. Junto con Java, C y VB, PHP es uno de   los lenguajes m&aacute;s usados en la actualidad [21].   Dispone de las siguientes librer&iacute;as de abstracci&oacute;n de acceso a datos [22]:</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>- <b>ADOdb</b>, una popular librer&iacute;a de c&oacute;digo abierto   que tambi&eacute;n cuenta con una versi&oacute;n para el   lenguaje Python, disponible en la comunidad de SourceForge.</p>     <p>- <b>PEAR DB y PEAR MDB2</b>, dos versiones de las   librer&iacute;as de abstracci&oacute;n de acceso a datos de   la comunidad de PHP. PEAR es la sigla PHP Extension and Application Repository.</p>     <p>- <b>PDO</b> (PHP Data Objects), reciente estrategia de   PHP para usar un n&uacute;cleo com&uacute;n de m&eacute;todos   de acceso a datos, con independencia del SGBD utilizado.</p>     <p><b> 4.3 El patr&oacute;n DAO (Data Access   Objects)</b></p>     <p>  Un patr&oacute;n de software presenta una soluci&oacute;n   probada a un problema recurrente en un contexto   espec&iacute;fico [23]. El patr&oacute;n DAO permite abstraer y   encapsular el acceso a una fuente de datos, independizando   el almacenamiento persistente de la   l&oacute;gica de negocio y control. El DAO administra las   conexiones, recupera y almacena informaci&oacute;n de la   fuente de datos, actuando como un adaptador entre   los componentes de negocio y el origen de los datos. Los elementos del patr&oacute;n DAO son: [24]</p> </font></font>    <p><font size="2" face="Verdana"> - BusinessObject: objeto cliente que requiere acceso   a la fuente de datos (Servlet).</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> DataAccessObject: abstracci&oacute;n de la implementaci&oacute;n de acceso a datos (Class).</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> DataSource: implementaci&oacute;n de una fuente de datos (DBMS, XML, etc.).</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> TransferObject: objeto usado por la clase DAO   para el transporte de datos (Bean).  </font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    ]]></body>
<body><![CDATA[<p>El diagrama de la <a href="img/revistas/eia/n9/n9a07fig2.gif">figura 3</a> ilustra el uso del patr&oacute;n   DAO en el caso de aplicaci&oacute;n de la Aldea Contable   para el acceso a los datos de la tabla Temas.</p>     <p>La clase TemaDAO se encarga de implementar   sobre la tabla Temas las tradicionales operaciones   CRUD, denominadas as&iacute; por las iniciales   de Create, Read, Update y Delete; en ocasiones se   llaman operaciones CRUDEL [25], adicionando   Exist para verificar la existencia de un objeto y   List para recuperar todos los datos de una tabla.   La clase TemaDTO contiene objetos planos con   los datos para insertar o que fueron sacados de la   tabla Temas. En la figura 3 se ilustra adem&aacute;s la clase   ResultSet, que es creada por la clase DataSource   cuando se necesita recuperar m&uacute;ltiples registros y   se usa por la clase TemaDAO para listar los registros de la tabla Temas.</p>     <p><b>  4.4 Mapeo objeto-relacional (ORM:   Object Relational Mapping)</b></p>     <p>  Se refiere a la t&eacute;cnica de transformar las representaciones   de los datos de un modelo de objetos   en un modelo de datos con un esquema basado en   SQL [26]. Una soluci&oacute;n ORM est&aacute; compuesta de cuatro partes:</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Una API encargada de realizar las operaciones   CRUD para los objetos de las clases persistentes.   Dichas operaciones se corresponden con instrucciones   DML (Data Manipulation Language) en el SGBD.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Un lenguaje o API para especificar consultas   (Queries) que se refieran a clases y propiedades   de clases.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Una utilidad para especificar metadatos de mapeo.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> T&eacute;cnicas de optimizaci&oacute;n de transacciones   como el chequeo sucio autom&aacute;tico (automatic   dirty checking), el cual detecta cambios en los   objetos y actualiza su estado en la base de datos   sin necesidad de escribir sentencias update; estas   t&eacute;cnicas est&aacute;n acompa&ntilde;adas de estrategias para   la recuperaci&oacute;n de los registros de las tablas involucradas   en una clave for&aacute;nea sobre objetos en memoria, tales como:</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>- <b>Carga perezosa (Lazy Loading)</b>. Se cargan primero   los registros de la tabla maestra y posteriormente, si se necesitan, los registros de la tabla detalle.</p>     <p>- <b>Carga proactiva (Eager Loading)</b>. Mediante un   join se cargan de una vez los registros de la tabla maestra y los de la tabla detalle.</p>     ]]></body>
<body><![CDATA[<p>  Para la implementaci&oacute;n de una soluci&oacute;n que   utilice el mapeo objeto-relacional, se dispone de cuatro niveles de adaptabilidad.</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Relacional puro</b>. La aplicaci&oacute;n completa, incluyendo   la interfaz de usuario, est&aacute; dise&ntilde;ada con el   modelo relacional y operaciones basadas en SQL.   Las aplicaciones en esta categor&iacute;a generalmente tienen un alto uso de procedimientos almacenados.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Mapeo de objetos ligero</b>. Las entidades se representan   como clases que se mapean manualmente   a tablas relacionales. El manejo manual de SQL/   JDBC se oculta de la l&oacute;gica de negocio usando   patrones de dise&ntilde;o, como el patr&oacute;n DAO. Esta   aproximaci&oacute;n es ampliamente conocida y es   adecuada para aplicaciones con un n&uacute;mero peque&ntilde;o   de entidades o aplicaciones con modelos gen&eacute;ricos de datos.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Mapeo de objetos medio</b>. La aplicaci&oacute;n se dise&ntilde;a   alrededor del modelo objetual. El SQL se genera   en tiempo de desarrollo utilizando una herramienta   de generaci&oacute;n de c&oacute;digo o en tiempo de   ejecuci&oacute;n por medio de un framework. Este tipo   de mapeo es adecuado para aplicaciones con   transacciones complejas, en particular cuando   se requiere portabilidad entre diferentes bases   de datos. Estas aplicaciones com&uacute;nmente usan   el patr&oacute;n Active Record, y rara vez se utilizan procedimientos almacenados.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Mapeo de objetos completo</b>. Soporta modelos de   objetos sofisticados que tengan composici&oacute;n,   herencia y polimorfismo. La capa de persistencia   se implementa de manera transparente en frameworks   como Hibernate [27] o utilizan la t&eacute;cnica   de scaffold para desplegar autom&aacute;ticamente los   formularios para las operaci&oacute;n CRUD.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>Las opciones para adoptar una soluci&oacute;n ORM   se basan en el uso de implementaciones de la especificaci&oacute;n   JDO o en la utilizaci&oacute;n de frameworks ORM.</p>     <p>  <b>JDO (Java Data Objects).</b> Est&aacute;ndar desarrollado   por Java Community Process, que define las   interfaces y clases para manejar objetos persistentes   del dominio (objetos de negocio y aplicaci&oacute;n). Su funcionamiento se basa en las siguientes premisas:</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Mediante un archivo XML se indica qu&eacute; clases son persistentes.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Se establecen los par&aacute;metros de configuraci&oacute;n   para la ejecuci&oacute;n de la persistencia: clases que   implementan JDO, archivo con los par&aacute;metros   de conexi&oacute;n, descriptores de persistencia (habitualmente   se sit&uacute;an en los directorios META-INF   o WEB-INF para aplicaciones web) y la versi&oacute;n   modificada de las clases persistentes con su versi&oacute;n original.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> Se procesan las clases persistentes compiladas y   se les agrega c&oacute;digo mediante el Enhancer, que   se encarga de hacer que cada clase persistente   implemente la interfaz PersistenceCapable. Las   nuevas .class son compatibles con cualquier implementaci&oacute;n de JDO.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    ]]></body>
<body><![CDATA[<p><font size="2">-</font><font size="2" face="Verdana"> El objeto de la clase PersistenceManager se encarga   de establecer el contexto de la conexi&oacute;n   (jdo.properties) y las transacciones y realiza las   operaciones internas de persistencia (CRUD).   La recuperaci&oacute;n selectiva de instancias se lleva   a cabo mediante el lenguaje de consulta JDOQL [28].</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Entre las implementaciones de JDO se encuentran:   KODO de BEA, JDO Genie de Hemisphere   Technologies, JRelay de Object Industries GmbH, Versant y JPox.</p>     <p>  <b>Frameworks ORM. </b>Un framework provee   una arquitectura definida en la cual otra aplicaci&oacute;n   puede ser organizada y desarrollada [29]. Uno de los   frameworks ORM m&aacute;s conocidos es Hibernate, que   apoya la construcci&oacute;n de la capa de acceso a datos   en aplicaciones Java, soportando una amplia variedad   de SGBD: Oracle, DB2, MySQL, PostgreSQL,   SAP DB, entre otras. En cualquier aplicaci&oacute;n que utilice Hibernate aparecen cuatro objetos b&aacute;sicos:</p> </font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Configuration</b>. Contiene la informaci&oacute;n necesaria   para realizar la conexi&oacute;n a la base de datos.   Lee dos tipos de archivos XML: un archivo de   propiedades (Hibernate.properties) en el cual se   especifican los par&aacute;metros de conexi&oacute;n al SGBD y   un archivo de mapeo (*.hbm.xml) para cada clase   que requiera persistir, indicando las correspondencias clases/tablas y propiedades/columnas.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>SessionFactory</b>. Es una f&aacute;brica de Sessions. Un   objeto Configuration tiene toda la informaci&oacute;n necesaria para crear una SessionFactory.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Session</b>. Es la principal interfaz entre la aplicaci&oacute;n   Java e Hibernate. Mantiene las conversaciones   entre la aplicaci&oacute;n y la base de datos. Permite   adicionar, modificar y borrar objetos en la base de datos.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"> <b>Transaction</b>. Permite las operaciones de confirmar y deshacer transacciones.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  Hibernate proporciona un lenguaje de consulta   orientado a objetos llamado HQL (Hibernate Query   Language). Se diferencia del SQL en dos aspectos:   permite hacer preguntas basadas en objetos y propiedades   y no en tablas y columnas; no permite manipular   datos, s&oacute;lo se encarga de recuperar objetos;   las operaciones de actualizaci&oacute;n, inserci&oacute;n y borrado las llevan a cabo los objetos Session [30].</p>     <p>  Otros de los frameworks de mapeo objeto-relacional   m&aacute;s usados son: TopLink de Oracle, Torque y SimpleORM.</p> </font> </font>     <p><font size="2" face="Verdana"><b>  5. <font size="3">HERRAMIENTAS</font></b></font></p> <font face="Verdana"size="2">     ]]></body>
<body><![CDATA[<p>  Los SGBD se encargan exclusivamente del   almacenamiento y manejo de los datos; su operaci&oacute;n   dentro del desarrollo de un sistema de informaci&oacute;n se   ve complementada por la participaci&oacute;n de otros tipos   de herramientas como las listadas a continuaci&oacute;n.</p> </font>    <p>- <font size="2" face="Verdana"><b>Herramientas de acceso a SGBD.</b> Sirven para   escribir e interpretar instrucciones SQL, DDL o   DML, que se env&iacute;an al motor de bases de datos   para ser ejecutadas. Entre las m&aacute;s comunes se   tienen: SQL Navigator y TOAD de Quest Software,   SQL Developer de Oracle y Mysql Query Browser de MySQL AB.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b> Herramientas de administraci&oacute;n de SGBD.</b>   Una base de datos se puede administrar con un   subconjunto de instrucciones SQL, en especial   DCL (Data Control Language), sin embargo, el   volumen de instrucciones de administraci&oacute;n es   considerable; es en este punto en donde las herramientas   que apoyan las labores de administraci&oacute;n   se hacen &uacute;tiles. En algunos casos los SGBD vienen   acompa&ntilde;ados de herramientas de acceso y de   administraci&oacute;n. Entre las m&aacute;s usuales est&aacute;n: SQL   Server Enterprise Manager, Oracle Enterprise Manager (OEM) y phpMyAdmin para MySQL.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b> Herramientas de modelado de datos. </b>Sirven   para construir modelos relacionados con los   datos, permiten la generaci&oacute;n de c&oacute;digo y, en   algunos casos, la transformaci&oacute;n de modelos   l&oacute;gicos a modelos f&iacute;sicos. Entre las de mayor uso   tenemos: DBDesigner de FabForce.net, Designer   de Oracle, ERwin de Computer Associates y ER/Studio de Embarcadero Technologies.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2"></font></font>    <p><font size="2">-</font><font size="2" face="Verdana"><b> Herramientas de generaci&oacute;n de c&oacute;digo de   acceso a datos.</b> Sirven para generar el c&oacute;digo de   la capa de persistencia a partir de un esquema de   la base de datos. Por lo general, basan el c&oacute;digo   generado en el uso del patr&oacute;n DAO. Entre las   m&aacute;s conocidas figuran: FireStorm/DAO de Code   Futures Software, DAOGen de TitanicLinux.Net y MyDB Studio de H2LSoft.</font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">    <p>  La Ingenier&iacute;a Inversa es una funcionalidad   presente en la mayor&iacute;a de herramientas, que permite   conectarse a uno o varios tipos de SGBD para extraer   de sus metadatos la informaci&oacute;n necesaria para la   construcci&oacute;n de modelos, generaci&oacute;n de c&oacute;digo o   definici&oacute;n de scripts para la creaci&oacute;n de objetos de la base de datos.</p> </font> </font>     <p><font size="3" face="Verdana"><b>  6. CONCLUSIONES Y TRABAJOS FUTUROS </b></font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">     <p>  El &aacute;rea de las bases de datos es uno de los   frentes del desarrollo de software que ha alcanzado   una mayor madurez; caracter&iacute;sticas como la transformaci&oacute;n   de modelos y la generaci&oacute;n de c&oacute;digo para   el acceso a datos y para la creaci&oacute;n de los objetos   de la base de datos indican que las herramientas que   apoyan la construcci&oacute;n de artefactos de persistencia   cumplen con los criterios para ser consideradas herramientas MDA (Model Driven Architecture) [31].</p>     <p>  Un interesante frente de trabajo es la construcci&oacute;n   de herramientas de c&oacute;digo abierto para   apoyar procesos de desarrollo basados en m&eacute;todos   que se centran en los artefactos de persistencia como   CADM (CASE Applications Development Method) [15] y la reciente Agile Data Method [32].</p>     <p>  En el caso de aplicaci&oacute;n de la Aldea Contable   se utiliz&oacute; una aproximaci&oacute;n metodol&oacute;gica basada   en RUP [14]; sin embargo, se les puso &eacute;nfasis a los   modelos de datos y a los artefactos de persistencia, lo   que agiliz&oacute; en gran medida el desarrollo del proyecto.   Todos los modelos construidos durante el desarrollo   de la Aldea Contable se encuentran disponibles para   la comunidad inform&aacute;tica en la direcci&oacute;n: http://   contaduria.udea.edu.co/index.php?page=Principal.   Documentacion; para los modelos de datos solo se   publican los modelos f&iacute;sicos construidos con DBDesigner   de fabFORCE.net usando la notaci&oacute;n IE; para   los modelos l&oacute;gicos y f&iacute;sicos de este art&iacute;culo se utiliz&oacute; Designer de Oracle y la notaci&oacute;n Barker.</p> </font> </font>     ]]></body>
<body><![CDATA[<p>  <font size="3" face="Verdana"><b>REFERENCIAS</b></font></p> <font face="Verdana"size="2"><font face="Verdana"size="2">     <!-- ref --><p>  1. Codd, E. F. A relational model of data for large shared   data banks. Communications of the ACM, Association   for Computing Machinery Inc. Vol. 13, No. 6, Junio de 1970, pp. 377-387.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000144&pid=S1794-1237200800010000700001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  2. Chen, P. The entity-relationship model: towards a   unified view of data. ACM Transactions on Database   Systems, Vol. 1, No 1, Marzo de 1976, pp. 9-36.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000145&pid=S1794-1237200800010000700002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  3. Barker, R. CASE*Method: entity relationship modeling.   Wokingham, England: Addison-Wesley, 1990.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000146&pid=S1794-1237200800010000700003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>4. Finkelstein, C. Strategic systems development. Sydney: Addison-Wesley, 1992.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000147&pid=S1794-1237200800010000700004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  5. Bruce, T. Designing quality databases with IDEF1X   information models. New York: Dorset House, 1992.   ISBN 0932633188.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000148&pid=S1794-1237200800010000700005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  6. Halpin, T. Information modeling and relational databases. San Francisco: Morgan Kaufmann, 2001.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000149&pid=S1794-1237200800010000700006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  7. Booch, G., Rumbaugh, J. y Jacobson, I. El lenguaje   unificado de modelado. Madrid: Addison Wesley, 1999. ISBN 8478290281.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000150&pid=S1794-1237200800010000700007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  8. Naiburg, E. and Maksimchuk, R. UML for database   design. Addison-Wesley Object Technology Series, 2001. ISBN: 9780201721638.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000151&pid=S1794-1237200800010000700008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  9. Ambler, S. A UML profile for data modeling. documento electr&oacute;nico Ambysoft Inc. 2001. (Citada:   agosto 16 de 2007) <a href="http://www.agiledata.org" target="_blank">http://www.agiledata.org/essays/ umlDataModelingProfile.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000152&pid=S1794-1237200800010000700009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  10. Object Management Group. Request for proposal,   Information Management Metamodel (IMM). OMG, 2007.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000153&pid=S1794-1237200800010000700010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  11. World Wide Web Consortium. Extensible markup   language (XML) 1.0, 4 ed. documento electr&oacute;nico.   W3C Recommendation, 2006. (Citada: agosto 16 de   2007) <a href="http://www.w3.org" target="_blank">http://www.w3.org/TR/REC-xml/</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000154&pid=S1794-1237200800010000700011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  12. Hay, D. A comparison of data modeling techniques.   documento electr&oacute;nico. Essential Strategies, Inc,   1997. (Citada: agosto 16 de 2007) <a href="http://www.essentialstrategies.com" target="_blank">http://www.essentialstrategies.com/publications/modeling/compare.htm</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000155&pid=S1794-1237200800010000700012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  13. Ambler, S. Data modeling 101. documento electr&oacute;nico.   Ambysoft Inc, 2006. (Citada: agosto 16 de 2007)   <a href="http://www.agiledata.org" target="_blank">http://www.agiledata.org/essays/dataModeling101.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000156&pid=S1794-1237200800010000700013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  14. Booch, G., Rumbaugh, J. y Jacobson, I. El proceso   unificado de desarrollo de software. Madrid: Addison Wesley, 2000. ISBN 8478290362.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000157&pid=S1794-1237200800010000700014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  15. Dorsey, P. y Koletzke, P. Manual de Oracle Designer.   Espa&ntilde;a: McGraw-Hill, 1997. 556 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000158&pid=S1794-1237200800010000700015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  16. Dorsey, P. y Hudicka, J. Oracle 8: Dise&ntilde;o de bases de   datos con UML. M&eacute;xico: McGraw-Hill Interamericana, 1999. 394 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000159&pid=S1794-1237200800010000700016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  17. Microsoft Corporation. ODBC - Open database connectivity   overview. documento electr&oacute;nico. Microsoft   Corporation, 2007. (Citada: agosto 9 de 2007)   <a href="http://support.microsoft.com" target="_blank">http://support.microsoft.com/kb/110093/en-us.</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000160&pid=S1794-1237200800010000700017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  18. Sun Developer Network (SDN). JDBC overview.   documento electr&oacute;nico. Sun Microsystem, 2007.   (Citada: agosto 9 de 2007) <a href="http://java.sun.com" target="_blank">http://java.sun.com/products/jdbc/overview.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000161&pid=S1794-1237200800010000700018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  19. Oracle Technology Network. Oracle call interface:   general information. documento electr&oacute;nico. Oracle   Corporation, 2007. (Citada: agosto 9 de 2007) <a href="http://www.oracle.com" target="_blank">http://www.oracle.com/technology/tech/oci/index.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000162&pid=S1794-1237200800010000700019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  20. Microsoft Developer Network. ADO programmer´s   guide. documento electr&oacute;nico. MSDN. Citada:   agosto 30 de 2007<a href="http://msdn2.microsoft.com" target="_blank"> http://msdn2.microsoft.com/ enus/library/ms807642.aspx</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000163&pid=S1794-1237200800010000700020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  21. TIOBE Software. TIOBE programming community   index. documento electr&oacute;nico. The Coding Standards   Company. (Citada: septiembre 13 de 2007) <a href="http://www.tiobe.com" target="_blank">http://www.tiobe.com/tpci.htm</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000164&pid=S1794-1237200800010000700021&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  22. Holloway A. and Jones C. Underground PHP and Oracle manual 2007. 195 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000165&pid=S1794-1237200800010000700022&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  23. Gamma, E., Helm R., Johnson R. and Vlissides J.   Design patterns, elements of reusable object-oriented software. Reading MT: Addison Wesley, 1995.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000166&pid=S1794-1237200800010000700023&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  24. Sun Developer Network (SDN). Core J2EE Patterns:   Data Access Object. documento electr&oacute;nico. Sun   Microsystem, 2002. (Citada: agosto 31 de 2007)   <a href="http://java.sun.com" target="_blank">http://java.sun.com/blueprints/corej2eepatterns/ Patterns/DataAccessObject.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000167&pid=S1794-1237200800010000700024&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  25. Kruger, S., Parlione, M., Mills, D., McNena, S., Healy,   M. and Biava, F. Engineering WS-I compliant web   services for IBM Lotus Domino V8. documento electr&oacute;nico. IBM, 2007. (Citada: septiembre 16 de   2007)<a href="http://www.ibm.com" target="_blank"> http://www.ibm.com/developerworks/lotus/ library/domino8-WS-I/ index.html?ca=drs-</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000168&pid=S1794-1237200800010000700025&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  26. Red Hat Middleware. Hibernate reference documentation   v 3.2.2. documento electr&oacute;nico. Red Hat, 2007   (Citada: agosto 23 de 2007) <a href="http://www.hibernate.org" target="_blank">http://www.hibernate.org/hib_docs/reference/en/pdf/hibernate_reference. pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000169&pid=S1794-1237200800010000700026&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  27. Bauer, C. and King, G. Hibernate in action. documento electr&oacute;nico. (Citada: agosto 23 de 2007)   <a href="http://dev2dev.bea.com.cn" target="_blank">http://dev2dev.bea.com.cn/bbs/servlet/D2DServlet/ download/126-34474-202400-2852/HibernateIn Action.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000170&pid=S1794-1237200800010000700027&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  28. M&aacute;rmol, J. Persistencia de objetos. JDO, Soluci&oacute;n   Java. documento electr&oacute;nico (Citado: agosto 27 de   2007) <a href="http://dis.um.es" target="_blank">http://dis.um.es/~jmolina/Persistencia%20de%20Objeto%20JDO.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000171&pid=S1794-1237200800010000700028&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  29. Fayad, M., Schmidt, D. and Johnson, R. Building application frameworks. Addison-Wesley, 1st ed., 1999.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000172&pid=S1794-1237200800010000700029&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  30. Roses, F. Introducci&oacute;n a Hibernate. documento electr&oacute;nico.   (Citada: agosto 27 de 2007). <a href="http://www.froses.com" target="_blank">www.froses.com/ Assets/Files/Articles/Hibernate_Introduccion_es.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000173&pid=S1794-1237200800010000700030&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>31. Quintero, J. y Anaya, R. Marco de referencia para la   evaluaci&oacute;n de herramientas basadas en MDA. Memorias   del X Workshop Iberoamericano de Ingenier&iacute;a de   Requisitos y Ambientes de Software, 2007. p. 225-238. ISBN 978-980-325-323-3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000174&pid=S1794-1237200800010000700031&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  32. Ambler, S. The vision of the Agile Data Method   documento electr&oacute;nico Ambysoft Inc, 2007. (Citada:   septiembre 19 de 2007) <a href="http://www.agiledata.org" target="_blank">http://www.agiledata.org/ essays/vision.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000175&pid=S1794-1237200800010000700032&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Codd, E]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[A relational model of data for large shared data banks]]></source>
<year>Juni</year>
<month>o </month>
<day>de</day>
<volume>13</volume>
<page-range>377-387</page-range><publisher-name><![CDATA[Communications of the ACM, Association for Computing Machinery Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The entity-relationship model: towards a unified view of data]]></article-title>
<source><![CDATA[ACM Transactions on Database Systems]]></source>
<year>Marz</year>
<month>o </month>
<day>de</day>
<volume>1</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>9-36</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Barker]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[CASE-Method: entity relationship modeling]]></source>
<year>1990</year>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Finkelstein]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Strategic systems development]]></source>
<year>1992</year>
<publisher-loc><![CDATA[Sydney ]]></publisher-loc>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bruce]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Designing quality databases with IDEF1X information models]]></source>
<year>1992</year>
<publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[Dorset House]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Halpin]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Information modeling and relational databases]]></source>
<year>2001</year>
<publisher-loc><![CDATA[San Francisco ]]></publisher-loc>
<publisher-name><![CDATA[Morgan Kaufmann]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Booch]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Rumbaugh]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Jacobson]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[El lenguaje unificado de modelado]]></source>
<year>1999</year>
<publisher-loc><![CDATA[Madrid ]]></publisher-loc>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Naiburg]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Maksimchuk]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[UML for database design]]></source>
<year>2001</year>
<publisher-name><![CDATA[Addison-Wesley Object Technology Series]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ambler]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[A UML profile for data modeling]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="book">
<collab>Object Management Group</collab>
<source><![CDATA[Request for proposal, Information Management Metamodel (IMM)]]></source>
<year>2007</year>
<publisher-name><![CDATA[OMG]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="">
<collab>World Wide Web Consortium</collab>
<source><![CDATA[Extensible markup language (XML) 1.0, 4 ed.]]></source>
<year>2006</year>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hay]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[A comparison of data modeling techniques.]]></source>
<year>1997</year>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ambler]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[Data modeling 101.]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Booch]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Rumbaugh]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Jacobson]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[El proceso unificado de desarrollo de software]]></source>
<year>2000</year>
<publisher-loc><![CDATA[Madrid ]]></publisher-loc>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dorsey]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Koletzke]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[Manual de Oracle Designer]]></source>
<year>1997</year>
<page-range>556</page-range><publisher-name><![CDATA[McGraw-Hill]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dorsey]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Hudicka]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Oracle 8: Diseño de bases de datos con UML]]></source>
<year>1999</year>
<page-range>394</page-range><publisher-loc><![CDATA[México ]]></publisher-loc>
<publisher-name><![CDATA[McGraw-Hill Interamericana]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="book">
<collab>Microsoft Corporation</collab>
<source><![CDATA[ODBC - Open database connectivity overview]]></source>
<year>2007</year>
<publisher-name><![CDATA[Microsoft Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="">
<collab>Sun Developer Network (SDN)</collab>
<source><![CDATA[JDBC overview]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="book">
<collab>Oracle Technology Network</collab>
<source><![CDATA[Oracle call interface: general information]]></source>
<year>2007</year>
<publisher-name><![CDATA[Oracle Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<collab>Microsoft Developer Network</collab>
<source><![CDATA[ADO programmer´s guide]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="">
<collab>TIOBE Software</collab>
<source><![CDATA[TIOBE programming community index]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Holloway]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Underground PHP and Oracle manual]]></source>
<year>2007</year>
<page-range>195</page-range></nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gamma]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Helm]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Johnson]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Vlissides]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Design patterns, elements of reusable object-oriented software]]></source>
<year>1995</year>
<publisher-loc><![CDATA[Reading ]]></publisher-loc>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="">
<collab>Sun Developer Network (SDN)</collab>
<source><![CDATA[Core J2EE Patterns: Data Access Object]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kruger]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Parlione]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Mills]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[McNena]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Healy]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Biava]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[Engineering WS-I compliant web services for IBM Lotus Domino V8]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B26">
<label>26</label><nlm-citation citation-type="">
<collab>Red Hat Middleware</collab>
<source><![CDATA[Hibernate reference documentation]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B27">
<label>27</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bauer]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[King]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<source><![CDATA[Hibernate in action]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B28">
<label>28</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mármol]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Persistencia de objetos. JDO, Solución Java]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B29">
<label>29</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fayad]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Schmidt]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Johnson]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Building application frameworks]]></source>
<year>1999</year>
<edition>1st</edition>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B30">
<label>30</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Roses]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<source><![CDATA[Introducción a Hibernate]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B31">
<label>31</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Quintero]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Anaya]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Marco de referencia para la evaluación de herramientas basadas en MDA. Memorias del X Workshop Iberoamericano de Ingeniería de Requisitos y Ambientes de Software]]></source>
<year>2007</year>
<page-range>225-238</page-range></nlm-citation>
</ref>
<ref id="B32">
<label>32</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ambler]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[The vision of the Agile Data Method]]></source>
<year>2007</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
