Existen 3 maneras diferentes de obtener datos de una columna de Blob: getBytes getBinaryStream getBlobgetBytes vs getBinaryStream vs getBlob para obtener datos de una columna BLOB
Además, el objeto Blob devuelto por getBlob también tiene un getBytes y getBinaryStream en él.
¿Hay alguna razón en particular (rendimiento, memoria, problemas específicos de la base de datos) que deba elegir una sobre la otra?
El objeto Blob también tiene una llamada gratuita() que se ha introducido desde JDBC 4.0. Eso hace una diferencia?
También vale la pena asegurarse de que se implementa getBlob para su controlador JDBC antes de escribir un montón de código basado en él. Xerial sqlite-jdbc, por ejemplo, no lo implementa actualmente. – Kelly