iBatis, sin complicarte la vida

Cuando se lleva ya un tiempo en el mundillo de la programación OO, se llega rápidamente  a la conclusión de que hay tareas que se repiten sin cesar. Hasta yo me he podido dar cuenta de eso. Una de estas tareas es el tratamiento de los datos extraídos de una base de datos.

Lo normal, y digo lo normal y no lo que hay que hacer, porque cada uno es de su padre y de su madre, es transformar los registros de datos a listas de objetos y tratarlos como tales. Esto implica, entre otras cosas, lo que se denomina un “mapeo”, o sea, para cada campo de un registro, cargar su valor en un atributo de un objeto. Esto implica tener que hacer comprobaciones de tipos, longitudes, etc…

Para automatizar estos procesos existen los llamados “mapaedores” (iBatis, por ejemplo) y más complejos, los ORM (Object Relational Mapper), de los cuales, sin duda el más conocido es Hibernate (https://www.hibernate.org/).

iBatis (http://ibatis.apache.org/) no llega a ser un ORM, porque no oculta completamente al programador la capa SQL. Este deberá conocer el lenguaje de acceso a base de datos. Tiene la ventaja de que se puede utilizar con bases de datos poco normalizadas y la desventaja de que no es completamente portable entre diferentes sistemas de bbdd.

iBatis consiste en dos frameworks:

  • DAO: implementación de los patrones de diseño de acceso a datos (Direct Access Object)
  • Sql-Maps: capa de abstracción de acceso a bbdd con la persistencia de los objetos.

El framework DAO si que es independiente de la base de datos que estemos usando. En esta capa definiremos las operaciones a realizar: extracción de datos, borrados, actualizaciones. Básicamente, mediante un interfaz (UsuarioDAO), se definirán las operaciones y luego, para cada sistema de bases de datos, se creará la clase encargada de implementar dichos métodos (MySqlUsuarioDAO, OracleUsuarioDAO, etc…).

El framework sql-maps sí es dependiente de la base de datos. Se escriben las consultas directamente en SQL por lo que se tiene absoluta libertad y sobre todo control sobre lo que se está haciendo. Estos sql-maps permiten el paso de parámetros, la sustitución de fragmentos de la consulta, etc.

Por supuesto, iBatis se encarga de gestionar las conexiones, abrirlas, cerrarlas, tratar transacciones, etc…

Al principio, todos aquellos que hayan trabajado con Hibernate, pueden recelar de iBatis, debido a que tienen que bucear hasta el mismo código SQL, pero cuando se den cuenta de la facilidad de trabajo y manejo, y sobre todo de depuración que ofrece iBatis, esos temores desaparecerán.

Yo, personalmente, no he encontrado cosa más frustrante en Hibernate que la depuración… de repente, no se que pasa con las transacciones, que se me han quedado tres sesiones zombies por ahí, que como hago para optimizar esta consulta.

Es verdad que iBatis da mucho más trabajo que Hibernate (benditas “Criteria”) y que si tenemos que migrar un sistema iBatis de MySql a Oracle, por ejemplo, tendremos que reescribir muchas de las consultas, pero como decía mi abuela “lo breve si bueno, dos veces bueno”. En el caso de iBatis lo adaptaremos a “lo simple si bueno dos veces simple”.

Además, si iBatis ha sido incorporado al proyecto Apache, será por algo, digo yo. Lo podemos encontrar para JAVA y para .NET aunque este post está centrado en su versión JAVA.

Por último, solo resaltar que iBatis es un producto maduro (a día 8/2/2010 se está probando la versión 3b9) y con muchísima documentación en todo internet. El autor de iBatis ha publicado un libro sobre el framework bastante completo

Por supuesto, podéis encontrar plugins para el IDE Eclipse que os ayuden en el desarrollo. iBator es si duda, el mas conocido, desarrollado por iBatis.

¿Quién usa iBatis? pues en esta página http://opensource.atlassian.com/confluence/oss/pages/viewpage.action?pageId=25 tenéis una relación de los proyectos usando iBatis. Quizás el que mas pueda sonar sea “myspace.com“.

Y nada más, solo decir, como conclusión, que iBatis me ha proporcionado la solución que andaba buscando en la capa de acceso de datos de mis aplicaciones. Buscaba simplicidad y rapidez e iBatis me lo ha dado.

Tags: , , , , , , , , ,

Deje una respuesta

Código de seguridad: