[Hibernate]Insertion BLOB Limite
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 :
Code:
1 2
|
private Blob docContent; |
avec les getter et setter :
Code:
1 2 3 4 5 6 7 8 9
|
public Blob getdocContent()
{
return docContent;
}
public void setPdfContent(Blob pdocContent)
{
this.docContent = pdocContent;
} |
pour setter mon Blob je procède ainsi :
Code:
1 2 3 4
|
File pdf =new File("path_to_file");
docs.setdocContent(Hibernate.createBlob(FileUtil
.fileToByte(pdf))) |
code de fileToByte():
Code:
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;
} |
Pour le moment ce code ca marche à merveille :P pourtant j'ai 2 problèmes:
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.