java.sql.Blob e java.sql.Clob

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

O Derby agora suporta os tipos de dado nativos BLOB e CLOB. O Derby tamb??m fornece o seguinte suporte para estes tipos de dado:
  • Funcionalidades do BLOB O Derby suporta a interface java.sql.Blob, e os m??todos relacionados ao BLOB em java.sql.PreparedStatement e java.sql.ResultSet. Os m??todos getBlob de CallableStatement n??o est??o implementados.
  • Funcionalidades do CLOB O Derby suporta a interface java.sql.Clob, e os m??todos relacionados ao CLOB em java.sql.PreparedStatement e java.sql.ResultSet. 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 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.

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 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.

Tabela 1. 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.
Tabela 2. 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.
Conceitos relacionados
Classes, interfaces e m??todos java.sql do n??cleo do JDBC
Refer??ncias relacionadas
java.sql.Driver
java.sql.DriverManager.getConnection
java.sql.Driver.getPropertyInfo
java.sql.Connection
java.sql.DatabaseMetaData
java.sql.Statement
java.sql.PreparedStatement
java.sql.CallableStatement
java.sql.ResultSet
java.sql.ResultSetMetaData
java.sql.SQLException
java.sql.SQLWarning
Mapeamento de java.sql.Types em tipos SQL
java.sql.Connection
java.sql.ResultSet
java.sql.Statement
java.sql.PreparedStatement
java.sql.CallableStatement
java.sql.DatabaseMetaData
java.sql.ResultSetMetaData
java.sql.BatchUpdateException
Pacote JDBC para Connected Device Configuration/Foundation Profile (JSR169)
Funcionalidades apenas do JDBC 3.0
java.sql.Connection
java.sql.DatabaseMetaData
java.sql.ParameterMetaData
java.sql.PreparedStatement
java.sql.Savepoint
java.sql.Statement
Sintaxe de escape do JDBC