The PreparedStatement.setAsciiStream and other methods have a 3-arg form that includes the length of the stream and a 2-arg form that does not. If the 2-arg form is used, Derby has to calculate the length every time the method is called. With LOBs, especially large ones, this can cause a major performance impact, especially if the method is called repeatedly. This should be documented where appropriate.
Kristian, please feel free to correct or amplify anything I've said here.