[iBATIS] – Implementación Capa Persistencia
En este post se intentará explicar cómo implementar la capa de persistencia con iBATIS en una aplicación que utiliza Struts como framework MVC.
Como ejemplo pondré el código para implementar una consulta a base de datos para comprobar si un usuario está en sesión.
Intentaré ampliar la información en la Lyckapedia.
Instalación de iBATIS
iBATIS se distribuye como librerías, con lo cuál simplemente debemos copiarlas directorio WEB-INF/lib de nuestra aplicación web. Necesitaremos las siguientes librerías:
- ibatis-sqlmap, contiene los componentes de la capa de persistencia.
- ibatis-dao, contiene los compoentes de la capa de abstracción (en otro post trataremos la implementación de la capa de abstracción mediante iBATIS).
- ibatis-common, contiene los componentes comunes de las dos capas anteriores.
Configuración Framework de persistencia
Necesitamos configurar el fichero xml de configuración (jeje) del framework, sql-map-config.xml. Para consultar más sobre este fichero, así como la forma de configurarlo, consultar Lyckapedia : sql-map-config.xml.
Objetos de modelo -> sql-map.xml
Necesitamos un correcto análisis y diseño de nuestra aplicación para obtener los JavaBeans de modelo. Los ficheros sql-map.xml (altamente recomendable que sea un fichero sql-map.xml para cada objeto de modelo) contienen el código SQL que utilizaremos para gestionar estos objetos de modelo. Se puede consultar Lyckapedia: sqlMap.xml, aún en construcción.
En nuestro ejemplo, implementaremos un objeto Usuario.java, que representará un usuario en nuestra sesión. Típicamente
package ****;
public class Usuario {
private String stLogin = "";
private String stContrasenna = "";
public String getStLogin() {
return stLogin;
}
public void setStLogin(String stLogin) {
this.stLogin = stLogin;
}
public String getStContrasenna() {
return stContrasenna;
}
public void setStContrasenna(String stContrasenna) {
this.stContrasenna = stContrasenna;
}
}
Este objeto estará asociado a un fichero Usuario.xml del tipo sql-map, que contiene el código SQL. Por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Account">
<typeAlias alias="usuario" type="es.mec.infraestructuras.model.Usuario"/>
<select id="getItemListByProduct" resultClass="usuario" parameterClass="usuario">
SELECT
U.LOGIN AS stLogin,
U.PASSWORD AS stContrasenna
FROM WINT_USUARIO U
WHERE LOGIN = UPPER (#stLogin#)
AND PASSWORD = UPPER (#stContrasenna#)
</select>
</sqlMap>
Ejecutar la consulta
Usuario usuario = null;
try {
//Sólo es necesario configurarlo una vez
String resource = "es/mec/infraestructuras/persistencia/sqlMap-config.xml";
Reader reader = Resources.getResourceAsReader (resource);
SqlMapClient sqlMap = (SqlMapClient) SqlMapClientBuilder.buildSqlMapClient(reader);
if ((usuario = (Usuario) sqlMap.queryForObject("isUsuario", (Usuario) usuariosForm.getUsuario())) != null) {
System.out.println("UsuariosAction.identificar – Usuario correcto");
} else {
System.out.println("UsuariosAction.identificar – Usuario NO correcto");
}
} catch (Exception e) {
System.out.println("UsuariosAction.identificar – Excepcion : " + e.toString());
}
Es más útil profesionalmente:
public MyAppSqlConfig {
private static final SqlMapClient sqlMap;
static {
try {
String resource = “com/ibatis/example/sqlMap-config.xml”;
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException (“Error initializing MyAppSqlConfig class. Cause: ” + e);
}
}
public static getSqlMapInstance () {
return sqlMap;
}
}
Y luego crear una instancia
…
SqlMapClient sqlMap = MyAppSqlMapConfig.getSqlMapInstance();
..
[tags]iBATIS[/tags]
También te puede interesar:
- [iBATIS] – Implementación Capa Abstracción El framework iBATIS DAO es la parte de iBATIS que se encarga de la Capa de Abstracción situada entre la Capa de Negocio y la...
- [Struts] – Manejo de objetos de negocio en los ActionForm La mayoría de los formularios de las aplicaciones web recogen o muestran los datos de los objetos de negocio de nuestra aplicación. Debido a esto,...
- [iBATIS] – Abator Abator es un generador de código para utilizarlo dentro del framework de iBATIS. Podemos obtenerlo como un plugin para integrarlo en nuestro Eclipse. También podemos...
- Implementación con Struts : Cambio de Contraseña Planteamiento Necesitamos implementar en una aplicación web basada en Struts un cambio de contraseña de los usuarios de la aplicación. El usuario al olvidar su...
- [iBATIS] – Inyección de nombres En iBATIS podemos tener sentencias SQL dinámicas, del estilo a : SELECT * FROM $TABLE_NAME$ WHERE $COLUMN_NAME$ = #value# TABLE_NAME y COLUMN_NAME pueden ser inyectadas...






























