Apache MyFaces Orchestra

Apache MyFaces Orchestraという新プロジェクトがスタートしています。公式ページ冒頭の説明によれば「永続化レイヤとWebフレームワークを結びつける単純な方法を提供するのが目的」とのこと。MyFacesのサブ プロジェクトなのでJSFの利用が前提で、永続化レイヤの方が基本的には何でもOKなようですが、JPAを使うケースが多いよう。

Orchestraは、「カンバセーション」(複数のリクエストにまたがる可能性のあるスコープ) の間、永続化レイヤのセッション (JPAのEntityManagerなど) をオープンしたままにします。Managed Beanの定義は、JSF仕様で定義されたManaged Bean構文の代わりに、Springの定義を使って、カンバセーション スコープであることと、カンバセーション名を定義しておきます。

カンバセーション スコープのManaged Bean内の@PersistenceContextアノテーションに対して、OrchestraがインジェクトするJPA EntityManagerは、1つのカンバセーションの間では、いつも同じEntityManagerインスタンスになります。メソッドに@Transactionalアノテーションを付けておけば、メソッドの最後にEntityManagerのフラッシュとコミットをやってくれます。

リクエスト スコープよりも長いカンバセーション/ダイアログを扱うための他のフレームワーク JBoss SeamShale Dialog、Spring Annotationsとの比較は、こちらから。