No JDBC 2.0, java.sql.Blob é o mapeamento para o tipo BLOB
(objeto grande binário) do SQL;
java.sql.Clob é o mapeamento para o tipo CLOB (objeto grande caractere)
do SQL.
java.sql.Blob e java.sql.Clob fornecem um ponteiro lógico para um objeto
grande, em vez de uma cópia completa do objeto.
O
processa somente uma página de dados na memória por vez.
Não há necessidade de processar e armazenar todo o BLOB em memória apenas para
acessar alguns poucos bytes iniciais do objeto LOB
O
agora suporta os tipos de dado nativos BLOB e CLOB.
O
também fornece o seguinte suporte para estes tipos de dado:
- Funcionalidades do BLOB
O suporta a interface
java.sql.Blob, e os métodos relacionados ao BLOB em
e
.
Os métodos getBlob de CallableStatement não estão implementados.
- Funcionalidades do CLOB
O
suporta a interface java.sql.Clob, e os métodos relacionados ao CLOB em
e
.
Os métodos getClob dos procedimentos de CallableStatement
não estão implementados.
Para utilizar as funcionalidades java.sql.Blob e java.sql.Clob:
- Utilizar o tipo BLOB do SQL para armazenamento;
Os tipos LONG VARCHAR FOR BIT DATA, BINARY e VARCHAR FOR BIT DATA
também funcionam.
- Utilizar o tipo CLOB do SQL para armazenamento;
Os tipos LONG VARCHAR, CHAR e VARCHAR também funcionam.
- Utilizar os métodos getBlob ou getClob da
interface java.sql.ResultSet, para obter um tratador de BLOB ou
CLOB para os dados subjacentes.
- Não podem ser chamados métodos estáticos (Extensão SQL sobre SQL)
em qualquer coluna LOB.
Além disso, a conversão entre cadeias e BLOBs não é recomendada,
porque a conversão é dependente da plataforma e do banco de dados.
O
utiliza cadeias UNICODE (caracteres com 2 bytes), enquanto outros produtos
de banco de dados podem utilizar caracteres ASCII (1 byte por caractere).
Se forem utilizadas várias páginas de código, cada caractere poderá necessitar
de vários bytes.
Poderá ser necessário um tipo BLOB maior para acomodar uma cadeia normal no
.
Devem ser utilizados tipos CLOB para armazenar cadeias.
Restrições de BLOB, CLOB, (tipos-LOB):
- Os tipos-LOB não podem ser comparados com relação a igualdade (=)
e desigualdade (!=, <>).
- Os valores dos tipos-LOB não são ordenáveis, portanto não são suportados os
testes <, <=, >, >=.
- Os tipos-LOB não podem ser utilizados em índices, ou como colunas de
chave primária.
- Também são proibidas as cláusulas DISTINCT, GROUP BY e ORDER BY
nos tipos-LOB.
- Os tipos-LOB não podem estar envolvidos em conversões implícitas como
outros tipos base.
O
implementa todos os métodos para estas interfaces do JDBC 2.0, exceto pelos
métodos set e get da interface CallableStatement.
Recomendações:
Como o tempo de vida de java.sql.Blob e java.sql.Clob termina
quando a transação é efetivada, deve ser desativada a auto-efetivação
(auto-commit) quando se usa as funcionalidades
java.sql.Blob e java.sql.Clob.
Métodos java.sql.Blob do JDBC 2.0 suportados
Retorna
Assinatura
Notas de implementação
InputStream
getBinaryStream()
byte[]
getBytes(long pos, int length)
São lançadas exceções se pos < 1,
se pos for maior que o comprimento, ou se length <= 0.
long
length()
long
position(byte[] pattern, long start)
São lançadas exceções se pattern == null,
se start < 1, ou se pattern for uma matriz de comprimento 0.
long
position(Blob pattern, long start)
São lançadas exceções se pattern == null,
se start < 1, se pattern possuir comprimento 0,
ou se for lançada uma exceção ao tentar ler o primeiro byte de pattern.
Métodos java.sql.Clob do JDBC 2.0 suportados
Retorna
Assinatura
Notas de implementação
InputStream
getAsciiStream()
Reader
getCharacterStream()
NÃO SUPORTADO
String
getSubString(long pos, int length)
São lançadas exceções se pos < 1,
se pos for maior que o comprimento de Clob, ou se
length <= 0.
long
length()
long
position(Clob searchstr, long start)
São lançadas exceções se searchStr == null, se
start < 1, se searchStr possuir comprimento 0,
ou se for lançada uma exceção ao tentar ler o primeiro caractere de
searchStr.
long
position(String searchstr, long start)
São lançadas exceções se searchStr == null,
se start < 1, ou se o padrão for uma cadeia vazia.