私はEJB3(アプリとWebサービスレイヤーの場合はHibernate + Glassfish、WebUIの場合はLifton Glassfish)を使用してJavaで多層金融処理アプリケーションを開発中です。私のビジネスロジックを置きます。
このプロジェクトが開始されたとき、私たちの最初の概念は、ビジネスロジックの大部分をステートレスセッションBeanに入れることでした。ただし、時間が経つにつれて、EJBフレームワークによって提供される依存性注入が制限されすぎることがわかりました。そのため、ビジネスロジックの多くは、ステートレスセッションBeanの@PostConstructメソッドでGuiceによってアセンブルされるPOJOになりました。 。この進歩により、セッションBeanとPOJOの間のビジネスロジックが断片化されました。私は、これを修正するためのアプローチを見つけようとしています。
最初に、Web層でセッションBeanのリモートインターフェイスを使用して、UIとWebサービスレイヤーの両方からアクセスできるいくつかの機能を実行しようとしました。これは、@WebService注釈付きのステートレスセッションBeanによって提供されます。これは、永続性とパフォーマンスの観点からは悪夢であることが判明しました。エンティティグラフが非常に大きくなる可能性があり、分離されたエンティティグラフを永続性コンテキストに再アタッチするとエラーが発生しやすいことが判明したため、ソリューションはオブジェクトの受け渡しを開始することでした。必要な場所でデータベースからエンティティを検索します。
私の基本的な質問はこれです:ビジネスロジックをセッションBeanとPOJOのどちらにするかを決定するために、どのような原則とガイドラインを提案できますか?複雑なオブジェクトグラフがある場合、エンティティBeanを渡すことが理にかなっているのはいつですか。