私はいくつかの「シーン」の詳細を取得し、jspページ内に表示する次のマッピングを持っています。Spring MVCコントローラ内のModelAndViewとbyte []
@RequestMapping(value="/{id}",method = RequestMethod.GET)
public ModelAndView showScene(@PathVariable String id){
ModelAndView mv = new ModelAndView("/Scene/scene");
//retrieving Scene using Hibernate
Scene scene = service.getScene(Long.parseLong(id));
mv.addObject("name", scene.getName());
mv.addObject("desc", scene.getDescription());
//etc....
return mv;
}
私の問題は、シーンオブジェクトのフィールドの1つがbyte []としてpngイメージであり、表示する必要があることです。私は、すべての.png拡張要求を処理し、byte []を返す別のコントローラを作成できることを理解しています。ような何か:
<servlet-mapping>
<servlet-name>PNGHandler</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
として画像への参照を送る:
mv.add("image", "image/"+scene.getId()+".png");
が、その後、私はPNG形式のコントローラで再び[]バイトを取得する必要がありますし、それは私に、追加のHibernateのトランザクションの費用がかかります。このトランザクションを保存し、バイト[]を2回取得しないようにするための回避策はありますか?
ありがとうございます。
はい、私はセッションを使用することができますyou.Sureに感謝し、私は:) –
@dannyことを行うには「Spring MVCの」道のようなものを考えていた:あなたはそれを行うためにSessionAttributes' @ 'を使用することができますが、中私の意見では、それは価値がありません - 生のセッションオブジェクトを使用するだけです。 – skaffman
セッションを使用すると、アプリケーションの拡張が妨げられる可能性があります(たとえば、2つのWebサーバーがあり、その両方でセッションを実現可能にする必要がある場合など)。そして、すでに言及したように、あなたはセッションの数に注意する必要があります:セッションがたくさんある(そして大きな)セッションが残っているなら、このソウルシップは、あなたがデータベースにアクセスするとパフォーマンスをさらに悪化させます二度。セッションが永続化されると、配列を書き込んで再度読み取る必要があるためです。これは、データベースから読み取るよりもはるかに遅くなります。 – Ralph