Bonjour ,
j'ai réussi à insérer des BLOB dans ma base Oracle grâce au code suivant:
je déclare mon bean simplement avec un attribut :
avec les getter et setter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2private Blob docContent;
pour setter mon Blob je procède ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public Blob getdocContent() { return docContent; } public void setPdfContent(Blob pdocContent) { this.docContent = pdocContent; }
code de fileToByte():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 File pdf =new File("path_to_file"); docs.setdocContent(Hibernate.createBlob(FileUtil .fileToByte(pdf)))
Pour le moment ce code ca marche à merveille pourtant j'ai 2 problèmes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public static byte[] fileToByte(File file) { byte[] byt = null; try { if(file!=null){ FileInputStream fis = new FileInputStream(file); byt = new byte[(int) file.length()]; fis.read(byt); fis.close(); } } catch (IOException e) { e.printStackTrace(); } return byt; }
1-la methode fileToByte() charge le fichier en totalité en mémoire ce qui m'engendre des soucis de mémoire et de performance
2-le cas d'un fichier de taille supérieur à Integer.MAX_VALUE ca marche pas ( dù à la methode fileToByte() qui prends un int dans byt = new byte[(int) file.length()].
Avez vous des idées pour resoudre ces problemes ou peut etre une autre solution pour inserer des Blob dans Oracle via Hibernate pour eviter ces 2 problemes .
Merci d'avance .
Bonne journée.
Partager