まず、Java (5 以降) では、@
(eg など) で始まる「もの」はアノテーション@Deprecated
と呼ばれます。
注釈は、プログラム自体の一部ではないプログラムに関するデータを提供します。注釈を付けるコードの操作に直接影響はありません。
JavaBeans を JSF で使用する場合は、スコープに構成する必要があります (定義はここにあります)。
@RequestScoped
: このスコープのオブジェクトは、リクエストの開始からリクエストの終了まで表示されます。リクエスト スコープは、リクエストの最初から始まり、レスポンスがクライアントに送信された時点で終了します。リクエストが転送されると、転送されたページにオブジェクトが表示されます。これは、そのページがまだ同じリクエスト/レスポンス サイクルの一部であるためです。リクエスト スコープを持つオブジェクトは、なし、リクエスト、セッション、またはアプリケーション スコープを持つ他のオブジェクトを使用できます。サーブレットで考えると、マネージドBeanはHttpServletRequest
リクエストが終わるまで(レスポンスがクライアントに送信されるまで)に格納されます。その後、Bean はリクエストに存在しなくなります。
@SessionScoped
: セッション スコープを持つオブジェクトは、セッションに属するすべての要求/応答サイクルで表示されます。このスコープを持つオブジェクトの状態は、リクエスト間で保持され、オブジェクトまたはセッションが無効になるまで持続します。セッション スコープを持つオブジェクトは、なし、セッション、またはアプリケーション スコープを持つ他のオブジェクトを使用できます。基本的に、これらのオブジェクトはHttpSession
(サーブレットを再度参照してください) に格納されます。JSESSIONID
各セッションには、Bean が関連付けられているセッション ID ( として知られる) があります。
ApplicationScoped
: アプリケーション スコープを持つオブジェクトは、アプリケーションがアクティブである限り、アプリケーションを使用するすべてのクライアントのすべての要求/応答サイクルで表示されます。サーブレットに関して言えば、これはServletConfig
.
@NoneScoped
: このスコープを持つオブジェクトは、どの JSF ページにも表示されません。構成ファイルで使用される場合、アプリケーション内の他のマネージド Bean によって使用されるマネージド Bean を示します。スコープのないオブジェクトは、スコープのない他のオブジェクトを使用できます。
の場合EntityManager
、これは永続コンテキストに関連付けられています。永続的なエンティティ インスタンスの作成と削除、主キー ID によるエンティティの検索、およびすべてのエンティティのクエリに使用されます。詳細については、JPA (Java Persistence API) 仕様またはHibernateを参照してください。
@Inject
、インスタンスが注入可能であることを意味します。それらは、依存性注入または制御の反転 (IOC)という悪名高い古い言葉に従います。これが基本的に意味することは、リソースEntityManager entityManager
が必要な場合(あなたのケースでは、JEEコンテナがリソースをインスタンス化することです)(コンストラクタなどを介して直接インスタンス化する必要はありません)。
@DataRepository
意味がわかりません。前にそれを見たことがない。
これがお役に立てば幸いです。