[iBATIS] – Insertar Claves en Oracle
Cuando 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;
}
También te puede interesar:
- [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...
- [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...
- [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...
- Insertar varios registros con 1 sentencia Insert Queremos añadir a una tabla que relaciona alumnos con profesores toda una clase nueva en la que los alumnos cuyo apellidos empiezan por A con...
- [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...






























