¿Cómo guardar archivos doc, pdf e imágenes en la base de datos mysql usando java?

Estoy tratando de salvar.doc, .pdf, .txt, y archivos de imagen en mi base de datos usando hibernate, jsf y mysql.

He creado una columna para guardar el archivo de tipo BLOB. Si estoy ahorrando.txt escriba luego los archivos se guardan correctamente.

Si intento guardar un archivo de cualquier otro formato, obtengo una excepción. En mi bean he creado un nombre de campo:byte[] file;

¿Cómo puedo guardarlo correctamente sin excepciones? ¿Necesito cambiar el tipo de datos para la columna mysql o usar un campo diferente para la clase java?

(en respuesta a BalusC)

Este es el código que estoy usando para escribir archivos. estoy usandofileInputStream y luego guardar el archivo usando el marco de hibernación.

Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();

if (item.isFormField()) {
   String name = item.getFieldName();
   String value = item.getString();
} else {
   String fieldName = item.getFieldName();
   String fileName = item.getName();
   String contentType = item.getContentType();
   boolean isInMemory = item.isInMemory();
   long sizeInBytes = item.getSize();
   byte[] fileInBytes=item.get();


   try {
      File uploadedFile = new File("/home/db/webApp", fileName);
      uploadedFile.createNewFile();
      FileInputStream fileInputStream = new FileInputStream(uploadedFile);
      //convert file into array of bytes
      fileInputStream.read(fileInBytes);
      fileInputStream.close();
  } catch (Exception e) {
      e.printStackTrace();
  }

   UploadedFile object= new UploadedFile(); 
   object.setFile(fileInBytes);
   uploadedObject.setFileName(fileName);
   session.save(object);

UploadedFile es jsf bean gestionado:

public class UploadedFile{
   private String fileName;
   private byte[] file;
   /**
    * @return the fileName
    */
   public String getFileName() {
      return fileName;
   }
   /**
    * @param fileName the fileName to set
    */
   public void setFileName(String fileName) {   
      this.fileName = fileName;
   }
   /**
    * @return the file
    */
  public byte[] getFile() {
     return file;
  }
  /**
   * @param file the file to set
   */
  public void setFile(byte[] file) {
      this.file = file;
   }
}

y mi tabla de base de datos tiene la siguiente estructura:

Create UploadFile(FILE_NAME` VARCHAR(1000) NOT NULL,
 `FILE` BLOB NOT NULL);

Respuestas a la pregunta(4)

Su respuesta a la pregunta