J'ai une énorme chaîne que je dois mettre en cache quelque part et comme je ne peux pas écrire dans un fichier, ma seule option est de la stocker dans la base de données sous forme de texte. Plus précisément, dans le clob que j'ai, je stocke un fichier JSON où je place la chaîne compressée sous une certaine clé de cet objet JSON.
Je compresse les chaînes mais quelque part dans la manipulation des chaînes, il se passe quelque chose qui ne me permet pas de décompresser les données. Je me demande donc si je ne devrais pas coder les données en base 64, mais cela perdrait la compression.
Que puis-je faire pour m'assurer que je peux stocker la chaîne compressée dans la base de données afin de pouvoir la récupérer ultérieurement ?
Je ne peux pas modifier la base de données, donc je suis coincé avec ce champ CLOB.
Ce sont mes fonctions de compression :
public static String compress(String text) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
OutputStream out = new DeflaterOutputStream(baos);
out.write(text.getBytes("UTF-8"));
out.close();
} catch (IOException e) {
//ooops
}
return baos.toString();
}
public static String decompress(String bytes) {
InputStream in = new InflaterInputStream(new ByteArrayInputStream(bytes.getBytes()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
byte[] buffer = new byte[8192];
int len;
while ((len = in.read(buffer)) > 0)
baos.write(buffer, 0, len);
return new String(baos.toByteArray(), "UTF-8");
} catch (IOException e) {
//ooops
}
}