iBatis

RECU-0098 (Recurso Ficha Técnica)

Descripción

iBatis es un framework de código abierto basado en capas desarrollado por Apache, que se ocupa de la capa de persistencia (se sitúa entre la capa de negocio y la capa de la base de datos). Simplifica la implementación del patrón de diseño Direct Access Objects (DAO) y la persistencia de objetos en bases de datos relacionales.

iBatis no es un ORM (Object Relational Mapper), es decir, no es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en base de datos; por lo que se pueden utilizar modelos de datos existentes o poco normalizados y, finalmente, no es completamente transparente (el programador programa el SQL). iBatis asocia objetos de modelo (JavaBeans) con sentencias SQL o procedimientos almacenados mediante ficheros descriptores XML, simplificando la utilización de bases de datos.

Ventajas e inconvenientes

iBatis presenta grandes ventajas con respecto al resto de soluciones de su misma familia:

  • iBATIS DAO facilita el manejo de la capa de persistencia mediante la utilización de interfaces.
  • iBATIS SQL MAPS facilita la asignación de datos entre el modelo de datos de nuestra base de datos y el modelo de clases de nuestra aplicación.
  • Simplicidad:
    • Aprender a utilizarlo
    • Fácil de mantener
    • Programación declarativa (configurando ficheros XML)
    • Separación entre SQL y el lenguaje de programación de la aplicación (Java/.NET).
  • Portabilidad: entre Java y .NET; entre diferentes proveedores de bases de datos.
  • Se trata de código abierto, es decir open source.

No obstante, también existen un conjunto de inconvenientes que hacen que en ocasiones iBatis no sea la herramienta más idónea:

  • Las bases de datos que gestiona iBATIS deben ser exclusivamente relacionales.
  • No es totalmente transparente (hay que programar SQL).
  • Pierde funcionalidad si casi todas las sentencias SQL son construidas dinámicamente.

Alternativas

JDBC

Es un API (Application programming interface) que describe o define una librería estándar para acceso a fuentes de datos, principalmente orientado a bases de datos relacionales que usan SQL (Structured Query Language). No es buena idea usar esta solución para aplicaciones que exijan un gran rendimiento, ya que la transformación JDBC-ODBC es costosa. Tampoco es buena solución para aplicaciones con alto nivel de escalabilidad. No obstante, tiene la ventaja de su simplicidad.

Hibernate

Es un framework ORM. Permite la persistencia de Objetos Java. Se basa en un modelo más orientado a la programación orientada a objeto. Más avanzado que iBatis. Permite portabilidad de base de datos, y mayor transparencia ante cambios del modelo de objetos. Genera sentencias SQL automáticamente. No obstante, en caso de tener la necesidad de modificar las sentencias generadas, o crear sentencias nuevas, es necesario conocer el lenguaje de consultas HQL (Hybernate Query Languaje).

EJB 3.0 (Enterprise Java Bean)

Un Bean es un componente software que tiene la particularidad de ser reutilizable y así evitar la tediosa tarea de programar los distintos componentes uno a uno. Dentro de este conjunto, se encuentran los Enterprise Java Bean que son componentes del contexto de servidor que cubren la necesidad de intermediar entre la capa web y diversos sistemas empresariales. en este sentido, los EJB buscan la información en bases de datos gestionando la integridad de los datos persistentes, es decir, la consistencia entre los datos de memoria y los de la base de datos. Los ejb's son fáciles de utilizar, aunque la curva de aprendizaje puede llevar un coste bastante considerable.

Requisitos e incompatibilidades

Requisitos

iBatis no debe ser utilizado cuando se requiere una automatización total y transparente de la persistencia. Tampoco es recomendable su uso cuando se requiere soporte multi-RDBMS (motor de base de datos) transparente y automático

Incompatibilidades

  • Java 1.4 o superior.
  • En versiones anteriores a la 2.0, iBatis no permitía el uso de PL/SQL. Se recomienda la NO utilización de procedimientos almacenados, salvo en el caso de que estos existieran previamente y no se pudiera migrar la lógica de negocio en ellos implementada a lógica de aplicación.
  • Para acceder al Gestor de la Base de Datos Microsoft SQL Server 2000, existen problemas cuando se ejecutan sentencias sin datos. Se han reportados distintos errores en donde se indica que se dejan transacciones abiertas cuando la sentencia que se ejecuta no devuelve datos (en el caso de la consulta) o no afecta a ningún datos (en el caso de las inserciones, actualizaciones y borrados).

Interacciones

Una de las herramientas con las que iBatis se encuentra bastante relacionada es Spring, no obstante, también se puede utilizar sin ella. Spring ofrece un conjunto de plantillas que hacen que iBatis sea fácilmente manejable. Para configurar Spring dentro de una aplicación, bastaría con incluir las librerías necesarias y especificar los entities utilizados por Spring dentro de los ficheros de configuración.

Versiones

Existen dos versiones de iBatis, una para Java y otra para aplicaciones en .NET. Para entornos JEE, iBatis v2.3.0 es la actual y la mejor versión en modo release. Es también la primera versión que no incluye el framework DAO. La última versión que incluye el framework DAO es la 2.2.0. Para .NET ibatis DataMapper 1.6.1 y DataAccess 1.9.1.