与えられた:
私は、List<ComplexObjectThatContainsOtherObjectsAndEvenLists>
このデータを複数のページ/リクエストにわたって保持したいと考えています。このオブジェクトは非常に大きく、最大 1000 個のオブジェクトが含まれます。
現在の実装:
私が現在行っているのはserializing
、以下を使用したこの複雑なオブジェクトです (SO でこのコードを見つけたところです。残念ながら思い出すことができない作者に感謝しています。申し訳ありません)
public static String serialize(Object object) {
ByteArrayOutputStream byteaOut = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = null;
try {
gzipOut = new GZIPOutputStream(new Base64OutputStream(byteaOut));
gzipOut.write(new Gson().toJson(object).getBytes("UTF-8"));
} catch(Exception e) {
return null;
} finally {
if (gzipOut != null) try { gzipOut.close(); } catch (IOException logOrIgnore) {}
}
return new String(byteaOut.toByteArray());
}
String
出力をページに隠して、<input type="hidden">
必要なときにいつでもコントローラーに戻します。この文字列の長さは約 1300 ~ 2000 文字です。
質問:
String
これをセッションに保存する方が良いですか?(下記参照)
session.setAttribute("mySerializedString", mySerializedString);
長所と短所を教えてください。
これまでの私の長所と短所(確かではありません):
よくhidden
わかりませんが、ページがレンダリングされている間(長すぎるため)、およびコントローラーに送信されたときに、実装が影響を与える可能性があると思います。session
実装。