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 Derby 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
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 Derby 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 Derby. Devem ser utilizados tipos CLOB para armazenar cadeias.
O Derby 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.
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. |
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. |