Este tema describe el uso y la semántica de los LOB con los que debe familiarizarse para utilizar LOB en su aplicación. Se cubren varias técnicas para trabajar con LOB.
Aquí, los LOB persistentes asumen que está tratando con LOB en tablas que ya existen, mientras que la tarea de crear tablas con columnas LOB generalmente la realiza el administrador de la base de datos.
- Puede utilizar LOB temporales para almacenar datos transitorios. Los datos se almacenan en un espacio de tabla temporal en lugar de un espacio de tabla normal. Debe liberar LOB temporales después de que ya no los necesite. Si no lo hace, el espacio que consume el LOB en el espacio de tabla temporal no se recuperará.
- Puede insertar LOB temporales en una tabla. Cuando hace esto, se crea y almacena una copia permanente del LOB.
- Puede crear un LOB temporal con el método estático createTemporary, definido en las clases oracle.sql.BLOB y oracle.sql.CLOB. Libera un LOB temporal con el método freeTemporary.
- Puede probar si un LOB es temporal o no llamando al método isTemporary(). Si el LOB se creó llamando al método createTemporary, entonces el método isTemporary() devuelve verdadero, de lo contrario, devuelve falso.
- Puede liberar un LOB temporal llamando al método freeTemporary. Libere cualquier LOB temporal antes de finalizar la sesión o la llamada.
Estados de la columna LOB
Las técnicas que se utilizan al acceder a una celda en una columna LOB difieren según el estado de la celda dada. Una celda en una columna LOB puede estar en cualquiera de los siguientes estados:
- NULL: se crea la celda de la tabla, pero la celda no contiene ningún valor ni localizador.
- Vacío: existe una instancia de LOB que tiene un localizador en la celda, pero no tiene ningún valor en esa condición, la longitud del LOB es cero.
- Poblado: existe una instancia de LOB que tiene tanto el localizador como el valor en la celda.
Bloqueo de una fila que contiene un LOB
El motivo para bloquear el LOB es que puede bloquear una fila que contiene un LOB para evitar que otros usuarios de la base de datos escriban en el LOB durante una transacción. Mientras bloquea una fila que contiene un LOB, especifique la cláusula FOR UPDATE cuando seleccione la fila, si la fila está bloqueada, otros usuarios no pueden bloquear o actualizar el LOB, hasta que finalice su transacción.
Apertura y cierre de
LOB Las API de LOB incluyen operaciones que le permiten abrir y cerrar explícitamente una instancia de LOB. Puede abrir o cerrar fácilmente una instancia LOB persistente de cualquiera de estos tipos: BLOB, CLOB, NCLOB o BFILE. Puede abrir una LOB para lograr uno o ambos de los siguientes resultados:
- Abra el LOB en modo de solo lectura: esto garantiza que el LOB no se puede cambiar en su sesión hasta que cierre explícitamente el LOB. Por ejemplo, puede abrir el LOB para asegurarse de que ninguna otra parte del programa cambie el LOB mientras utiliza el LOB en una operación crítica.
- Abra el LOB en modo de lectura/escritura: solo instancias persistentes de CLOB , NCLOB o BLOB : abrir un LOB en modo de lectura y escritura difiere cualquier mantenimiento de índice en la columna LOB hasta que cierre el LOB. Abrir un LOB en modo de lectura y escritura solo es útil si hay un índice extensible en la columna LOB y no desea que la base de datos realice el mantenimiento del índice cada vez que escribe en el LOB. Esta técnica aumentará el rendimiento de su aplicación si está realizando varias operaciones de escritura en el LOB mientras está abierto.
- Si abre una LOB, debe cerrar la LOB en algún momento posterior de su sesión. Este es el único requisito para lograr un LOB abierto. Mientras una instancia de LOB está abierta, puede realizar tantas operaciones como desee en el LOB, siempre que las operaciones estén permitidas en el modo dado.
- vacío abierto (modo int)
- anular cerrar()
- booleano isOpen()
- Debe envolver las operaciones de LOB dentro de una operación de llamada Abrir/Cerrar; de lo contrario, cada modificación en el LOB abrirá y cerrará implícitamente el LOB, activando así cualquier activador en un índice de dominio. Tenga en cuenta que, en este caso, cualquier índice de dominio en el LOB se actualizará tan pronto como se realicen las modificaciones del LOB.
- Cuando envuelve sus operaciones de LOB dentro de la operación de llamada Abrir/Cerrar, los activadores no se activarán para cada modificación de LOB. En lugar de eso, el activador en los índices de dominio se activará en las operaciones de llamada Cerrar.
- Cuando abre un LOB llamando al método open o open(int). A continuación, puede leer o escribir el LOB sin que se asocie ningún disparador con ese disparo de LOB. Cuando termine de acceder al LOB, cierre el LOB llamando al método de cierre. Cuando cierre la LOB, se dispararán todos los disparadores asociados con la LOB.
- Puede verificar si un LOB está abierto o cerrado llamando al método isOpen . Siempre que abra el LOB llamando al método open(int), el valor del argumento debe ser MODE_READONLY o MODE_READWRITE , como se define en las clases oracle.sql.BLOB y oracle.sql.CLOB. Si abre el LOB con MODE_READONLY , cualquier intento de escribir en el LOB dará como resultado una excepción de SQL.
Publicación traducida automáticamente
Artículo escrito por ShubhamMaurya3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA