*EJBの作成 [#w896d58b] Enterprise JavaBeans (EJB) はJava EEの中核で、アプリケーションサーバー等のEJBコンテナで管理・実行される。~ EJBは外部のサーバー等からのリモート呼び出し機能を備える。(今回は同じサーバー内でのみ使用する)~ ~ JPAでデータの操作を行うSession Beanを作成する。Session Beanとはロジックの処理を行うEJBである。~ EJBにはSession Beanの他にEntity Bean(現在は非推奨)やMessage-Driven Beanがある。~ ~ ファイル→新規ファイルからEJBを作成する。~ プロジェクトに-ejbの名前のプロジェクトを選び、カテゴリ:エンタープライズJavaBeansのファイル・タイプ:セッションBeanを選択し、次へ。~ #ref(ejb1.gif)~ ~ EJBの名前とパッケージ名を入力し、終了。~ ~ セッションのタイプは次の通りである。~ ステートレス:状態を持たない。使い終わったインスタンスを使いまわす。~ ステートフル:状態を持ち、各インスタンスはクライアントと1対1である。~ シングルトン:インスタンスはアプリケーションに1つ。~ ~ インターフェースのタイプは次の通りである。~ ローカル:このアプリケーションからEJBを呼び出すインターフェースを作成する。(なくても可)~ リモート:別のアプリケーションからEJBをリモート呼び出しをするためのインターフェースを作成する。~ #ref(ejb2.gif)~ ~ ソースコードの枠が自動生成される。~ ステートレスBeanを表すアノテーション@Statelessが付加されている。~ また、このクラスがローカルからインターフェースを経由せず利用できることを表す@LocalBeanが付加されている。(@Localも@Remoteも使用しない場合は省略可)~ #ref(ejb3.gif)~ ~ JPAを使用してDBにアクセスするコードを入力する。~ EntityManagerはDBへのアクセス機能を提供するクラスである。~ EntityManager型のフィールドに@PersistenceContextアノテーションを付加しておくと、コンテナによってインスタンスを自動的に注入される。~ unitNameに以前作成した、永続ユニット名EnterpriseApplication-ejbPUを指定する。~ (右クリック→コードを挿入(Alt+Insert)からエンティティ・マネージャの使用を選択すると自動で入力される)~ (右クリック→コードを挿入(Alt+Insert)からエンティティ・マネージャの使用を選択すると自動で入力されるので一部を修正して使用)~ ~ readMessagesメソッド~ まず、EntityManagerのcreateNamedQueryメソッドで以前@NamedQueryアノテーションで定義したクエリを取得する。~ 第1引数はクエリ名、第2引数はクエリ結果のクラスである。~ 次に、クエリの実行結果を取得する。~ ~ writeMessageメソッド~ EntityManagerのpersistメソッドでデータをDBに挿入する。(永続化という)~ ~ トランザクションの処理はコンテナが自動的に行う。~ ~ #ref(ejb4.gif)~ ~ *コメント [#sef51365] #comment