Weld で JSF、Hibernate、CDI を使用しています。私のアプリケーションは、ビュー (xhtml)、コントロール (リクエスト/セッション/ビュー スコープ Bean)、モデル (エンティティ)、およびビジネス (アプリケーション スコープ Bean としてマークされた BO) に分かれています。
モデルとビジネス レイヤーをビューとコントロールからできるだけ切り離すようにしています。つまり、すべての xhtmls + コントロール Bean を変更したい場合、ビジネス レイヤーとエンティティに影響を与えることなく可能です。
私の問題は次のとおりです。ビジネス層には、ログインしたユーザー (または少なくともそのプロファイル) を知る必要があるメソッドが多数あります。これは、制御層に返される結果に影響を与えるためです。
例: 編集するユーザーのリストを要求すると、管理者はすべての登録済みユーザーのリストを受け取り、管理者は自分のプロファイルの「下」にあるユーザーのみのリストを受け取ります。
セッション Bean (ログインしたユーザーを含む) をビジネス レイヤーに挿入したくありません。これは、カップリングが発生するためです (つまり、コントロール/ビュー レイヤーをいつでも変更することはできません)。
現在、ログに記録されたユーザーを BO のメソッドのパラメーターとして渡すことでこれを行っていますが、私にはそれが「間違っている」と感じています。コントロール層は、ログインしたユーザーとして必要な人を渡すことができ、ビジネス層はそれを決して知らないと考え続けています。
私の最後の質問は次のとおりです。
- 私のやり方に何か問題がありますか?それとも私が考えすぎですか?
- それを行うより良い方法はありますか?