iBATIS es un marco de persistencia que automatiza el mapeo entre bases de datos SQL y objetos en Java, .NET y Ruby on Rails. En Java, los objetos son POJO ( Plain Old Java Objects ). Los mapeos se desacoplan de la lógica de la aplicación al empaquetar las sentencias SQL en archivos de configuración XML . El resultado es una reducción significativa en la cantidad de código que un desarrollador necesita para acceder a una base de datos relacional utilizando API de nivel inferior como JDBC y ODBC .
Otros marcos de persistencia como Hibernate permiten la creación de un modelo de objetos (en Java, por ejemplo) por parte del usuario, y crean y mantienen la base de datos relacional automáticamente. iBATIS adopta el enfoque inverso: el desarrollador comienza con una base de datos SQL e iBATIS automatiza la creación de los objetos Java. Ambos enfoques tienen ventajas, e iBATIS es una buena opción cuando el desarrollador no tiene control total sobre el esquema de la base de datos SQL. Por ejemplo, una aplicación puede necesitar acceder a una base de datos SQL existente utilizada por otro software, o acceder a una nueva base de datos cuyo esquema no está completamente bajo el control del desarrollador de la aplicación, como cuando un equipo de diseño de bases de datos especializado ha creado el esquema y lo ha optimizado cuidadosamente para un alto rendimiento.
El 21 de mayo de 2010, el equipo de desarrollo bifurcó el código y creó un nuevo proyecto llamado MyBatis , desde donde se realizaron nuevas versiones. Como consecuencia, el proyecto Apache iBATIS quedó inactivo y se trasladó a Apache Attic en junio de 2010.
Uso
Por ejemplo, supongamos que hay una tabla de base de datos PRODUCT (PROD_ID INTEGER , PROD_DESC VARCHAR(64) ) y una clase Java com.example.Product (id: int , description: String ) . Para leer el registro de producto que tiene la clave PROD_ID en un nuevo POJO de producto , se agrega la siguiente asignación a un archivo de asignación XML de iBATIS:
<select id= "getProduct" parameterClass= "java.lang.Long" resultClass= "com.example.Product" > seleccione PROD_ID como id,
PROD_DESC como descripción
de PRODUCTO
donde PROD_ID = # valor # </select>
Luego se puede recuperar un nuevo objeto de producto Java de la base de datos para el producto número 123 de la siguiente manera:
Resultado del productoProducto = ( Producto ) sqlMapClient . queryForObject ( "getProduct" , 123 );
En el ejemplo del archivo de mapeo, #value#se refiere al valor entero largo que se pasa a la consulta. Si el parámetro es un objeto Java, entonces los valores de las propiedades de ese objeto se pueden insertar en la consulta utilizando una #notación similar. Por ejemplo, si la clase del parámetro es una com.example.Productque tiene una propiedad llamada id, entonces #value#se puede reemplazar por #id#. El sqlMapClientobjeto es una instancia de la clase com.ibatis.sqlmap.client.SqlMapClient.
Disponibilidad
El fundador de iBATIS ha manifestado públicamente su descontento con Java 5, pero ha seguido lanzando nuevas versiones de iBATIS para Java. Las versiones 2.3.1 y 2.3.2 salieron en abril de 2008, y la 2.3.3 en julio.
El framework está actualmente disponible en versiones Java , .NET y Ruby (RBatis). El proyecto jBati es un ORM de JavaScript inspirado en iBATIS.
La herramienta Apache iBator está estrechamente relacionada: se conecta a su base de datos y utiliza sus metadatos para generar archivos de mapeo iBATIS y clases Java.
Historia
En 2001, Clinton Begin inició un proyecto llamado iBATIS. En un principio, el objetivo era desarrollar soluciones de software criptográfico. El primer producto que lanzó iBATIS fue Secrets, [1] una herramienta de cifrado y firma de datos personales muy similar a PGP. Secrets se escribió completamente en Java y se publicó con una licencia de código abierto.
Ese año, Microsoft publicó un artículo [2] para demostrar que su reciente marco de trabajo .NET 1.0 era más productivo que Java . Para ello, Microsoft creó su propia versión de la tienda de mascotas web de Sun, un proyecto web que Sun había utilizado para mostrar las mejores prácticas de Java ( Java BluePrints ). Microsoft afirmó que .NET era 10 veces más rápido y 4 veces más productivo que Java .
En 2002, Clinton desarrolló una aplicación llamada JPetStore [3] para demostrar que Java podía ser más productivo que .NET y que además podía hacerlo logrando una mejor arquitectura que la utilizada en la implementación de Microsoft .
JPetStore 1.0 tuvo un gran impacto [4] y la capa de base de datos que utilizó Clinton atrajo la atención de la comunidad. Pronto comenzó el proyecto iBATIS Database Layer 1.0, compuesto por dos componentes: iBATIS DAO y iBATIS SQL Maps.
iBATIS 2.0 se lanzó en junio de 2004. [5] Fue un rediseño completo que mantuvo las mismas características. Clinton donó el nombre y el código de iBATIS a Apache Software Foundation y el proyecto permaneció en la ASF durante seis años.
Finalmente, iBATIS DAO quedó obsoleto, considerando que había mejores marcos DAO disponibles, como Spring Framework .
El 19 de mayo de 2010 se publicó iBATIS 3.0 y simultáneamente el equipo de desarrollo decidió continuar el desarrollo del framework en Google Code . [6] bajo un nuevo proyecto llamado MyBatis .
El 16 de junio de 2010, Apache anunció que iBATIS se había retirado y trasladado al Apache Attic.
Véase también
- API de persistencia de Java
- Hibernar
- Enlace Eclipse
- Apache Cayenne
- IBM PureQuery
- nHidratarse
- OpenJPA
Referencias
- ^ Secretos de iBATIS
- ^ Pelea de gatos en una tienda de mascotas: J2EE vs. .NET
- ^ "JPetStore 1.0" (PDF) . Archivado desde el original (PDF) el 21 de octubre de 2013. Consultado el 8 de septiembre de 2013 .
- ^ Anuncio de JPetStore 1.0 en TheServerside.com
- ^ Anuncio de iBATIS 2.0
- ^ El equipo del proyecto iBATIS se traslada a Google Code
Bibliografía
Enlaces externos
- Sitio web oficial