Ingeniero

Páginas: 5 (1237 palabras) Publicado: 19 de mayo de 2013
Introducción
¿Qué es iBatis?
Apache iBatis está constituido por dos frameworks independientes que generalmente se usan juntos: DAO y sqlMaps. El primero simplifica la implementación el patrón de diseño Direct Access Objects (DAO) y el segundo simplifica la persistencia de objetos en bases de datos relacionales.
iBatis NO es un ORM (Object Relational Mapper), por lo que se pueden utilizarmodelos de datos existentes o poco normalizados y, finalmente, no es completamente transparente (el programador programa el SQL)
¿Para qué sirve?
El patrón DAO nos ayuda a organizar las tareas de persistencia (guardado, búsqueda, recuperación, borrado, etc.) de los objetos y nos permite definir múltiples implementaciones para un mismo objeto mediante la definición de una interfaz. Por ejemplo, lainterfaz UsuarioDao tiene los metodos guardarUsuario(Usuario usuario), obtenerUsuario(String loginId), etc y dos implementaciones: UsuarioMySqlDao y UsuarioLdapDao donde implementamos las operaciones para MySql y Ldap respectivamente. Con iBatis DAO podremos configurar cuándo usar una u otra implementación sin necesidad de modificar código. Además, agregar un UsuarioOracleDao será muy fácil y noimplicará modificar código del resto de la aplicación.
Cuando hacemos un análisis y diseño orientado a objetos obtenemos nuestro modelo de clases y también diseñamos el modelo de datos donde se almacena la información. Y siempre nos queda la tarea de conectarnos con una base de datos, crear statements, construir selects/updates/etc, recorrer resultsets y setear atributos de objetos, etc. paraguardar, buscar, recuperar, etc. los valores de los atributos de un objeto. iBatis sqlMap simplifica 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.
¿Cuándo utilizar iBatis?
Como toda herramienta, no vale para todo. iBatis sqlMap es muy válido cuando:

Se requiere una curva de aprendizajerápida y pocos conocimientos previos, y no requiere aprender un lenguaje de consultas como en Hibernate o EJB CMP.
Se necesita manipular el SQL (para utilizar SQL propietario, optimizarlo, etc.) o se necesita llamar a procedimientos almacenados.
El modelo de datos existe previamente y no está muy normalizado (aunque lógicamente se puede utilizar con modelos nuevos y normalizados)
Alto rendimiento yoptimización

…pero no para cuando:

Se requiere una automatización total y transparente de la persistencia
Se requiere soporte multi-RDBMS (motor de base de datos) transparente y automática

iBatis DAO es válido cuando:

Se sabe que el RDBMS (motor de base de datos) puede cambiar en el futuro
La implementación del acceso a datos puede requerir cambios sustanciales en el futuro
Laimplementación del acceso a datos puede variar entre un entorno de producción y otro (software comercial en distintos clientes)

iBatis DAO soporta sqlMap, Hibernate, etc.
¿Cómo funciona esto internamente?
Básicamente, programación declarativa y extensión del framework. Es decir, se configuran ficheros XML y, en iBatis DAO, se extienden clases donde se implementa la interfaz y el comportamientoespecífico.

Ejemplo:

1. iBatis DAO (opcional)

1. Crear un DAO.XML













2. Crear una utilidad de configuración tipo DaoConfig

public class DaoConfig {

private static final String DAO_XML = "es/dxd/km/dao/dao.xml";

private static final DaoManager daoManager;

static {
try {
daoManager = newDaoManager();
} catch (Exception e) {
throw newRuntimeException("Description. Cause: " + e, e);
}

}

public static DaoManager getDaoManager() {
return daoManager;
}

public static DaoManager newDaoManager() {
try {
Reader reader = Resources.getResourceAsReader(DAO_XML);
return DaoManagerBuilder.buildDaoManager(reader, null);
} catch (Exception e) {
throw new RuntimeException(
"Could not initialize DaoConfig. Cause: " + e, e);
}
}
}

3....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS