domingo, 19 de agosto de 2012

Montar Spring 3 con Mysql en Eclipse Juno Utilizando Abator Plugin

Conceptos Básicos de Spring 3
Como introducción al tema de Spring 3, podemos decir que en la actualidad el desarrollo de aplicaciones es más sencillo ya que hay muchas herramientas, APIs, y Frameworks; los cuales aunque son opcionales, el aprender a usarlos nos ayudará a desarrollar nuestras aplicaciones en menos tiempo y a que estas sean más robustas y contengan menos errores. También se vuelve un poco más complicado porque nuestras aplicaciones deben ser capaces de conectarse con otras aplicaciones y servicios. Además, como desarrolladores, somos los responsables de coordinar cada una de las partes de nuestra aplicación para que todo funcione correctamente. La frase de no reinventar la rueda suele ser un problema común en nuestros proyectos. Afortunadamente existen super-frameworks que nos ayudan haciéndose cargo de todas o casi todas las “complicaciones” recurrimos como programadores. El núcleo de Spring está basado en un principio o patrón de diseño llamado Inversión de Control (IoC por sus siglas en inglés). Las aplicaciones que usan el principio de IoC se basan en su configuración (que en este caso puede ser en archivos XML o con anotaciones como en Hibernate) para describir las dependencias entre sus componentes, esto es, los otros objetos con los que interactúa. En este caso “inversión” significa que la aplicación no controla su estructura; permite que sea el framework de IoC (en este caso Spring) quien lo haga. Por ejemplo, supongamos que tenemos una clase “AlmacenUsuario”, que depende de una instancia de una clase “UsuariosDAO” para realizar su tarea. “AlmacenUsuario” crea una instancia de “UsuariosDAO” usando el operador “new” u obtiene una de algún tipo de Fabrica. Usando la técnica de IoC, una instancia de “UsuariosDAO”, o una subclase de esta, es proporcionada a “AlmacenUsuario” en tiempo de ejecución por el motor de Spring. En este caso “UsuariosDAO” también podría ser una interface y Spring se encargará de proporcionarnos una instancia de una clase que implemente esa interface. Esta inyección de dependencia en tiempo de ejecución ha hecho que a este tipo de IoC se le dé el nombre más descriptivo de inyección de dependencia (DI por sus siglas en inglés). El concepto importante es que los componentes no saben cuál implementación concreta de otros componentes están usando; solo ven sus interfaces. El uso de interfaces y DI son mutuamente benéficos, ya que hace más flexible y robusta nuestra aplicación y es mucho más fácil realizar pruebas unitarias. 
Sobre Ibatis
iBATIS es un framework ó marco de trabajo ligero y código abierto desarrollado por Apache Software Foundation, su función principal es la de brindar un API para gestionar la capa de Persistencia de datos en la Base de Datos (Arquitecturalmente hablando estaría entre la capa de Negocio y la de Base de Datos). Se podría decir que iBatis es la unión de dos frameworks independientes, pero que se usan juntos como los son, los DAO y los sqlMaps.
Su funciones principales son: 
  • Ejecutar los SQL escritos mediante JDBC (Java DataBase Connectivity), por lo que nos olvidamos de los múltiples try/catch. 
  • Mapear las propiedades de los objetos a parámetros para las PreparedStatement (sentencias SQL parametrizables). 
  • Mapear los resultados de una query a un objeto o una lista de objetos.
¿Porqué usar Ibatis?
La capa DAO nos ayuda a organizar las tareas de persistencia como Agregar, Consultar, Modificar y Eliminar (CRUD ó ACME) de los objetos en la Base de Datos, además nos permite definir múltiples implementaciones para un mismo objeto mediante la definición de una interfaz (Interface).
Cuando se hace un análisis y diseño para nuestras aplicaciones, unos de los resultados que obtenemos es el diseño del modelo de datos que no es otro que en donde se almacenara la información que generemos. Además siempre tendremos la tarea de conectarnos con una base de datos, crear statements, construir insert/selects/updates/deletes, etc, recorrer resultsets y setear atributos de objetos, etc. para guardar, buscar, recuperar, etc. En iBATIS los sqlMap simplifican esta tarea resumiéndola a la configuración de ficheros XML, con SQL ANSI o propietario y funciona con prácticamente cualquier base de datos con driver JDBC (MySQL, Oracle, Progress, etc…)


Puesta en marcha del ejemplo
Para la realización de ejemplo vamos a necesitar los siguientes requerimientos
  • Eclipse (la versión utilizada para la demo es Eclipse juno - descargar desde eclipse.org).
  • Apache Tomcat 7
  • Jdk 7
  • Mysql mysql-5.5.27
  • Abator y Ibatis plugin para eclipse
Video Tutorial
Este video tutorial explica como levantar desde cero Spring 3 en eclipse utilizando el plugin de abator y bajo una base de datos Mysql
Pueden descargar toda la demo excepto el eclipse juno, que se puede descargar directamente desde eclipse org.
Link de Descarga :  Descargar demo.
Generar Muestras Propias Consultas en Ibatis
Como forma adicional, he creado un video tutorial, donde se detalla como crear nuestras propias consultas sql, como poder consumirlas.