Well, the first problem is that String contains character data, while BLOB contains binary data. Are you sure you shouldn't be using a CLOB, which is designed to hold characters? You're currently going around this issue by converting the String to bytes, but it entails character set conversion to your default locale and it might not be what you need.
Oracle won't accept a Blob or Clob created using the new operator. This thread contains a code that can be used to store a BLOB or CLOB in Oracle, and references to two other threads.