Annotation EJB 3.0 コース 第3回 2006年8月4日
きょうの目標 Annotation そのものについて理解する。 EJBでのAnnotationの利用と、その目的について概観する。
今回の講義内容 Annotationとはなにか EJB 3.0 の Entity Bean とAnnotation
Annotationとはなにか Annotationとはなにか EJB 3.0 の Entity Bean とAnnotation
Annotation とは? Annotation = 注釈 J2SE 5.0 (Tiger) から登場した新しい技術 EoD のための技術 それまで、JSR175 で議論されてきた。 EoD のための技術
Annotationの例 (1) public class Hoge extends Moge { @Override “@Override” の部分が Annotation Annotation は “@” からはじまる。 @Override は、moge メソッドに対する Annotation Moge クラスの doIt メソッドをオーバライドしていることを示す。 public class Hoge extends Moge { @Override public void doIt() { …… }
Annotation の例 (2) doIt メソッドは deprecated であることを示す。 public class Hoge { public void doIt() { …… }
Annotation の例 (3) Copyright は、Hoge クラスに対する Annotation @Copyright( value がメンバ名、tomoharu がメンバ値 複数のメンバを含めることができる。 @Copyright( value=“tomoharu” ) public class Hoge { …… }
Annotation の付加 Annotation は、クラス・メソッド・フィールド・引数などに付けることができる。
Entity BeanとAnnotation
Entity Bean とは? 「永続化」されているデータとの対応に用いるもの O/Rマッピング
これまでの Entity Beanの開発 Home インタフェースの作成 Remote (or Local) インタフェースの作成 実装クラスの作成 Deployment Descriptor (DD) ファイルの作成 ↓ たくさんのプログラムや 設定ファイルが必要になる
EJB 3.0 では POJO / POJI に Annotation を加える。 開発すべきプログラムや設定ファイルを減らすことができる。
Employee.javaでは (1) // Entity Bean である @Entity // EMP テーブルと関連づけられる @Table(name = "EMP") public class Employee implements java.io.Serializable { …… }
Employee.javaでは (2) // empNoプロパティはEntity BeanのIDである // テーブル中では主キーとなる @Column(name="EMPNO") public int getEmpNo() {return empNo; } ......
インピーダンス・ミスマッチとAnnotation(1) テーブル名、主キー、項目名、一対多の関係など 旧来の EJB では、こうした情報は DD ファイルに記述されていた。
インピーダンス・ミスマッチとAnnotation(2) Java プログラムの持つ情報 < テーブルの情報 Javaプログラムの持つ情報 + Annotation の情報 = インピーダンス・ミスマッチ インピーダンス・ミスマッチの解消
Annotationの導入による メリット EJB 3.0 の Entity Bean とAnnotation Annotationの導入によるメリット Annotationの処理
Annotation導入による メリット (1) これまでJava EEで提供されている各技術を使ってプログラムを作成するのは、なかなか大変な作業であった。 「インタフェース」と「実装クラス」 「お決まりのパターン」の記述 設定ファイルの記述 ……
Annotation導入による メリット (2) プログラムが単純になる プログラムの量も減る プログラムの設定情報の対応が明確になる ↓ EoD
Annotationの処理 Annotationとはなにか EJB 3.0 の Entity Bean とAnnotation
Annotationの処理 (1) Annotation は単独では意味を持たない。
Annotationの処理 (2) 実行されているプログラムから ソースコードから Reflection API を用いて、Annotation を読み取る ソースコードから apt (Annotation Processor Tool) コマンドを使う プログラマは「ファクトリ」と「プロセッサ」を作成して Annotation を読み取る