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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
private Blob docContent;
avec les getter et setter :
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;
	}
pour setter mon Blob je procède ainsi :
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)))
code de fileToByte():
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;
	}
Pour le moment ce code ca marche à merveille 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.