J2EE と EJB

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