miércoles, 20 de junio de 2007

persistencia

Persistencia es el "arte" de almacenar y/o recuperar el estado de un objeto, y el estado de un objeto es el valor de los campos de una objeto (mil disculpas si algún purista se siente incómono con estas definiciones).

No todo campo de un objeto requiere persistir, puede ser calculado, en tal caso a ese campo se lo llama trasciente. Por ejemplo si tengo una clase que representa un triángulo rectángulo entonces el estado a almacenarse corresponderá a los dimensión de los lados, mientras que la hipotenusa es un campo trasciente ya que resulta de aplicar la eterna ecuación pitagórica.

¿Pero cómo se almacena un objeto?, la respuesta puede ser tan sencilla como por ejemplo implementar un método "save()" en una clase de tal manera que abra un archivo, escriba allí el valor de cada campo, y luego cierre el archivo. Luego si requiero recuperar el estado de un objeto, leo desde el archivo el estado de los campos previamente almacenados. Pero es sabido que si se pretende almacenar la información en una base de datos, por las facilidades de indexación los métodos "load()" y "save()" no van a ser muy tribiales.

Una serie de metodologías y patrones se aplican bajo la denominación "Mapeo Objeto-Relacional" (en Inglés Object Relational Mapping - ORM). Esta denominación tiene algunas implicaciones la principal es aquella que nos dice que el modelo de negocios es un modelo de objetos (orientado a objetos) mientras que el almacenamiento es un modelo relacional. Cuando un objeto persiste movemos el estado de un modelo a otro.

A pesar de la eficiencia alcanzado por los RDBMS como MySql, DB2, Oracle, Sql Server, etc. El modelo relacional parece algo superable a largo plazo, es decir que pasará algún tiempo hasta que tengamos un producto serio y seguro para almacenar (persistir) objetos sin recurrir al modelo relacional. Por el momento ORM significa bastante. Un programador con mediana experiencia puede sospechar y deducir mentalmente alguna metodología para almacenar objetos, pero el tema se puede tornar tan escabroso y complejo que hoy por hoy tenemos algunos frameworks, como Hibernate e iBatis. Si se ha dado una vuelta por la librerías habrá notado el grosor de libros de Hibernate, pero si quiere saber que tan debatido y profundo es el tema le recomiendo este interasantísimo artículo.

No hay comentarios: