Is there a way to make reading out a Blob faster??
No. You have to get the stream using the LOB locator.
The slow speed in dealing with LOBs is because the actual data resides on the file system and when you read a LOB you are essentially causing Oracle to read a file.
To read the LOBs for 10 records it is like reading 10 files one at at time from beginning to end. The larger each LOB is the longer it will take.
See Reading and Writing BLOB, CLOB and NCLOB Data in the JDBC Developer's Guide
Example: Reading BLOB Data
Use the getBinaryStream method of the oracle.sql.BLOB class to read BLOB data. The getBinaryStream method provides access to the BLOB data through a binary stream.
The following example uses the getBinaryStream method to read BLOB data through a byte stream and then reads the byte stream into a byte array, returning the number of bytes read, as well.
// Read BLOB data from BLOB locator.
InputStream byte_stream = my_blob.getBinaryStream(1L);
byte  byte_array = new byte ;
int bytes_read = byte_stream.read(byte_array);
Well, I meant if there are faster ways to get the data using a Blob at all.
But you're right: I should have told you how I read from the Blob after I got it. I am using an XMLStreamReader to read from the InputStream: