Lo que no me mata, me fortalece
F. Nietzsche

[iBATIS] – Insertar Claves en Oracle

next.gifCuando insertamos un registro en una tabla, MySQL automáticamente rellena la clave única con un número entero único que se va autoincrementando. En Oracle este comportamiento no se sigue: debemos especificarle nosotros la clave con la que insertará el registro.

Podemos utilizar un procedimiento Oracle; o podemos crear una Secuencia que nos irá devolviendo un entero autoincrementándose con cada petición. El pequeño defecto de utilizar esto último es que si la inserción falla o se realiza un rollback de la transacción, no podremos volver a utilizar el código que la secuencia nos devolvió para esta transacción porque Oracle sí hace commit de la select a la secuencia.

Para utilizar con iBATIS las secuencias para obtener los códigos únicos para nuestras claves, podemos utilizar:

<insert id=“insertar” parameterClass=“persona” >

<selectKey keyProperty=“codPersona” resultClass=“java.lang.Integer”>

SELECT SEQ_PERSONA.NEXTVAL FROM DUAL

</selectKey>

insert into AAI_SOLICITUD_INVESTIGADOR

(COD_PERSONA, …)

values

(#codPersona#, …)

</insert>

De esta forma el método de inserción del DAO nos devolverá un Integer con el código con el que se ha insertado el registro.

Más rupestre pero a veces necesario sería implementar un método en la persistencia (DAO), obtenerSecuenciador(), que nos devuelva el código

<select id=“obtenerSecuenciador” resultClass=“java.lang.Integer”>

SELECT SEQ_ PERSONA.nextval FROM dual

</select>

Y luego en el negocio (BO) insertar el objeto con dicho código. Así podemos manipular, consultar, auditar – los códigos en el negocio.

public Integer insertarPersona (Persona persona){

Integer codPersona = personaDAO.obtenerSecuenciador();

Persona.setCodPersona (codPersona);

personaDAO.insertar (persona);

return codPersona;

}

[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 desde la clase que se le pase como parámetro. Para verlo más claro, un ejemplo.

Continua leyendo »

[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 Capa de Persistencia.

No es necesario implementar la Capa de Persistencia con iBATIS SQL MAP para que este framework funcione.

Continua leyendo »

[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

Continua leyendo »

[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 obtenerlo com un fichero JAR.

Inspeccionará la base de datos y generará :

  • los ficheros XML SQLMap.
  • los beans de la parte Java que representen las tablas de la base de datos.
  • las clases Java DAO para utilizar los anteriores.

Podemos encontrar más información en http://ibatis.apache.org/abator.html.

Comenta