10.3.3. Seam 管理永続コンテキストとアトミックな対話


merge() を使用したり、 各要求の開始時にデータを再ロードしたり、 例外と格闘しなくとも (LazyInitializationExceptionNonUniqueObjectException)、 対話にスコープされる永続コンテキストにより複数のサーバー要求にまたがる楽観的なトランザクションをプログラムすることができます。
楽観的ロックを使ってトランザクションの分離と一貫性を実現します。 Hibernate および EJB3 はいずれも @Version アノテーションを付与することで楽観的ロックの使用を容易にします。
デフォルトでは、 永続コンテキストは各トランザクションの終わりでデータベースと同期 (フラッシュ) されます。 これが目的の動作である場合もありますが、 すべての変更はメモリに保持され対話が正常に終了したときにのみデータベースに書き込まれる動作を期待することの方が多いでしょう。 これにより EJB3 永続との真にアトミックな対話を可能にします。 ただし、 Hibernate では仕様により定義される FlushModeType に対するベンダー拡張としてこの機能を提供しています。他のベンダーもすぐに同様の拡張機能を提供することが予想されます。
Seam では対話の開始時に FlushModeType.MANUAL を指定することができます。 現在は Hibernate が永続を実現する構成要素である場合にのみ機能しますが、 他のベンダーによる同等の拡張機能もサポートする予定です。
@In EntityManager em; //a Seam-managed persistence context
@Begin(flushMode=MANUAL)

public void beginClaimWizard() {
  claim = em.find(Claim.class, claimId);
}
Copy to Clipboard Toggle word wrap
これで claim オブジェクトは全対話の間、 永続コンテキストによって管理され続けます。 この claim に変更を加えることができます。
public void addPartyToClaim() {
  Party party = ....;
  claim.addParty(party);
}
Copy to Clipboard Toggle word wrap
ただし、 これらの変更は明示的に同期が発生するよう強制するまではデータベースに対してフラッシュされません。
@End public void commitClaim() { 
  em.flush(); 
}
Copy to Clipboard Toggle word wrap
pages.xml から flushModeMANUAL に設定することもできます。 たとえばナビゲーションルールでは以下のようになります。
<begin-conversation flush-mode="MANUAL" />
Copy to Clipboard Toggle word wrap
いずれの Seam 管理永続コンテキストに対しても手動によるフラッシュモードを使用するよう設定できます。
<components xmlns="http://jboss.com/products/seam/components" 
            xmlns:core="http://jboss.com/products/seam/core"> 
  <core:manager conversation-timeout="120000" 
        default-flush-mode="manual" /> 
</components>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat