9 de out de 2012

Salvar Blob no banco de dados utilizando JdbcTemplate

Este artigo tem o objetivo de mostrar os passos para salvar um tipo BLOB no banco de dados utilizando JdbcTemplate, apesar de não ser muito citado na literatura como as APIs de persistência, ainda há casos em devemos utilizar este recurso.


Os arquivos do  tipo BLOB  são bastante utilizados para salvar arquivos anexos, objetos serializados, XMLs, entre outros, mas um grande problema está na forma que são salvos os mesmos no banco.

Para a criação deste Artigo foram utilizados as tecnologias Spring 2.5 + e banco Db2.

Para salvar arquivos do Tipo BLOB no banco de dados utilizando JDBCTemplate é necessário utilizar uma implementação da interface LobHandler, para isto o Spring disponibiliza a implementação DefaultLobHandler.

Para executar o utiliza-se o AbstractLobCreatingPreparedStatementCallback, que recebe um lobHander como parâmetro. Com a utilização do Spring como contralador de injeção de dependências a utilização do LobHander fica bastante transparente. 

O código para a inserção fica da seguinte forma :

try {
  jdbcTemplate.execute(sql.toString(), new AbstractLobCreatingPreparedStatementCallback
  (lobHandler) {
    @Override
    protected void setValues(PreparedStatement ps, LobCreator lobCreator) 
    throws SQLException,DataAccessException {
 lobCreator.setBlobAsBytes(ps, x, byteArray);
    }
  });
} catch (Exception e) {
   throw e;
}
 
Os parâmetros que este método recebe são:
ps : O PreparedStatement que é utilizado no momento.
x : A posição que será adicionada ao paramêtro do SQL.
byteArray: Um array de bytes com o conteúdo que deseja salvar.
   

Nenhum comentário:

Postar um comentário