0

皆さん、 Open Session in ViewSession per requestパターンの違いは何ですか? Spring MVC と Hibernate を使用しています。ここではトランザクション境界については話していません。リクエストごとのセッションは 1 セッション:1 tx のようです。しかし、OSIV の場合、1 つのセッションがあり、複数のトランザクション (サービス呼び出しごとに 1 つ) があります。誰かがこれに光を当てることができますか?

4

1 に答える 1

3

OSIV の決定的な特徴は、実際には複数のトランザクションではなく、ビューがレンダリングされている間、セッションを開いたままにしておくことです。 JBoss wiki のこのページは、この設定を示しています (ただし、Web レイヤーからトランザクションを手動で管理することは私の好みではありません... より事前にパッケージ化されたものについては、Spring の OpenSessionInViewFilterを参照してください)。

1 つのセッション、1 つのトランザクションがあります。ビューのレンダリングを含むすべての作業がセッションのスコープ内で行われるため、これはまだ OSIV です。すべてのサービス メソッドを @Transactional (または同等の XML) としてマークしたとしても、新しいトランザクションの開始が明確に必要でない限り、同じ単一のトランザクションに参加することに注意してください。

そのため、OSIV は一種のセッション パー リクエストであり、同じ意味で使用されることもあります。しかし、レンダリングを表示する前に単一のセッションを確実に閉じれば、OSIV ではないリクエストごとのセッションを実装することは可能だと思います。

于 2012-05-26T13:12:52.160 に答える