Referencias en licurgo-tables

01:13AM sep 05, 2005 en categoria Licurgo por Enrique Rodriguez Lasterra

Etiquetas:


He aprovechado las ultimas horas del fin de semana para implementear el soporte de foreing-keys/references en el xml que define la metainformación

En el commit que so contaba el otro dia tenia ya implementado el soporte de referencias en licurgo, ahora necesitaba que fuera el usuario el que tenga el control de definir cuales son esas relaciones. Esto es necesario cuando estas trabajando contra una base de datos que no tiene las relaciones definidas, por ejemplo MySQL, o por ejemplo cuando la base de datos contra la q trabajas no tiene definida ninguna restricción y todo se controla a nivel de la aplicación.

El commit que acabo de realizar hace posible que

  1. Licurgo en primera instancia recupera de la BD toda la metainformación
  2. Si en el para el data object-->Tabla existe alguna etiqueta reference, se elimina la metainformación relacionada con las foreingKeys
  3. Una vez eliminada esa información, se crean asocian al data object las relaciones configuradas por el usuarios, esten estas o no definidas en la BD
  4. Si no existe ninguan etiqueta references, licurgo se fiara de la metainformación y la utilizara para establecer las relaciones entre tablas

El ejemplo del XML seria este
<dataobject name="NUMBERS"
datasource="test"
primary-key="ID"
auto="false"
>
<fields>
<field name="ID" type="integer" size="4" default="0" nullable="false" />
<field name="NAME" type="varchar_ignorecase" size="4" default="name" nullable="true" />
<field name="DESCRIPTION" type="varchar_ignorecase" size="15" default="description" nullable="true" />

</fields>
<references>
<reference field="USERS_ID" target-type="USERS" target-property="ID"/>
</references>

<uid-generator class="org.licurgo.jdbc.uid.SequenceUIDGenerator"
type="java.lang.Integer"
/>
</dataobject>

Hay q optimizar el proceso para que no se realicen muchas consultas, bien cacheando consulas o bien guardando el arbol de Data objects en memoria, aunque seguramente esto lo dejaré para un poco mas adelante, antes hay que introducir commons-loggin en licurgo para eliminar los temidos Systems.out



Comentarios:

Cuidado también con el JCL. Yo sólo lo pondría para un modo "debug" que registre todas las consultas que hace, etc. No para andar poniendo montones de trazas de "buscando en memoria, buscando en base de datos, ...", porque ten en cuenta que es ua librería para que se incruste en otras aplicaciones, y puede ser molesto demasiada salida, sobre todo porque el usuario esperara que todo funcione como es debido.

Enviado por Al en septiembre 05, 2005 a las 09:48 AM CEST #

Ya está subido al cvs, muertos todos los system.out y e.printStacktraces de esos :D

Enviado por woviux en septiembre 05, 2005 a las 05:19 PM CEST #

Woviux... vosotros dos juntos dais más miedo que el Fredi Kruger ese ;-).

Enviado por Al en septiembre 05, 2005 a las 08:46 PM CEST #

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado