2006年度サマースクール
EJB 3.0 コース
稚内北星学園大学
情報メディア学部
安藤 友晴
1
本講座の目標
Enterprise JavaBeans (EJB) 3.0 の基本事
項を理解する。
Java EE の「コンテナ/コンポーネントモデ
ル」を理解する。
Java Persistence API について理解する
2
講義予定 (1)
8月3日 (木)
Java EE と EJB
実習環境の構築
8月4日 (金)
Annotation
Stateless Session Beans
Stateful Session Beans
3
講義予定 (2)
8月5日(土)
8月6日(日)
O/R Mapping
Entity Bean
EntityManagerとEJB QL
Relation Mapping
8月7日(月)
まとめ
4
本講座のWebページ
www.wakhok.ac.jp/~tomoharu/ejb3summer-2006/
5
Java EE と
Enterprise JavaBeans (EJB)
EJB 3.0 コース
第1回
2006年8月3日
6
ここでの内容
Enterprise JavaBeans (EJB) とはなにか
EJB批判
EJB 3.0 の登場
7
Enterprise JavaBeans (EJB)
とはなにか
8
Java EEの基本モデル
Java EEは「データベース」を使った「Webア
プリケーション」の作成を念頭に置いてい
る技術
9
EJBとは何か?
EJB = Enterprise JavaBeans
「ビジネスロジック」や「データの永続化」をコン
ポーネント化したもの
ビジネスロジック = アプリケーションの本質的な処理
データの永続化 = メモリ上のデータをファイルシステ
ム上に保存して、プログラムが終了してもデータは残
るようにする
EJB は「EJBコンテナ」上で動作する
10
3種類のEJB
Session Beans
Entity Beans
Message-driven Beans
11
Session Beans (1)
クライアントが必要に応じて呼び出す処理
をまとめたもの
クライアントの特定のセッションに対応
セッション開始と同時に生成され、セッショ
ン終了時に消滅
12
Session Beans (2)
Stateless Session Beans
インスタンスに固有のフィールドがないため内
部状態を持たず、ユーティリティクラスのよう
に振る舞う
Stateful Session Beans
内部状態を持っている
13
Entity Beans
「永続化」されているデータとの対応に用いるも
の
O/Rマッピング
リレーショナルデータベースの1行と、Entity Bean の
一つのインスタンスが対応する
リレーショナルデータベースと Entity Bean の間で同
期が行われる
EJB 3.0 では “Java Persistence API” が用いら
れる
14
Message-driven Beans
Java Message Service (JMS)でのメッセー
ジを非同期に処理するためのもの
15
EJB批判
16
EJBに対する批判
EJBは、普及しつつも、常にさまざまな批判
にさらされてきた。
例:「従来のEJBは存在自体が間違いだっ
た」
http://itpro.nikkeibp.co.jp/free/NSW/NEWS/
20050621/163065/
By Rod Johnson (Spring Framework の作者)
/ 2005.06.21
17
EJB批判のポイント
複雑すぎる
制約が多すぎ
18
複雑すぎる
作成するプログラムがたくさん
Home インタフェース
Remote インタフェース
実装クラス
設定すべき項目もたくさん
それぞれの関係性がわかりにくい
19
制約が多すぎ
EJBのプログラムは、コンテナに依存しきっ
たものになりがち
コンテナから必要な情報を取得する
「Remoteインタフェースは EJBObject を継承
する」といったような多数の制約
そのため、単体テストが困難
「テストファースト」の時代なのに
20
そんなEJBの替わりとして
多くのソフトウェアが利用されている
軽量コンテナ
Spring Framework
HiveMind
Seaser2
O/Rマッピング
Hibernate
TopLink
Cayenne
21
EJB 3.0 の登場
22
EJB 3.0
2006年5月に正式リリース
これまでの EJB 批判を受け止め、大幅に
仕様を追加
EJBの「標準的な」書き方は大幅に変更された
23
“EoD” という考え方
Ease of Development = 開発の容易性
「いかにラクにソフトウェアを開発するか」
数年前から多用されているコトバ
最近のJava技術はEoDの考え方を基本と
しているものが多い。
J2SE 5.0, JSF, EJB 3.0, …
24
POJO と POJI (1)
従来のEntity Bean
Remoteインタフェースを継承したインタフェース
public interface SavingsAccount
extends EJBObject {}
EntityBean インタフェースを実装したクラス
public class SavingsAccountBean
implements EntityBean {}
EJB独自の規則に従ったオブジェクトになる
25
POJO と POJI (2)
POJO = Plain Old Java Object
POJI = Plain Old Java Interface
「純粋で古い」Javaオブジェクト
「純粋で古い」Javaインタフェース
「純粋で古い」= 特定のソフトウェアへの
依存性がない
26
POJO と POJI (3)
EJB 3.0 では
EJB 3.0 でのオブジェクトは、POJO /
POJI になる
POJO / POJI は単体テストも簡単
27
Annotation の利用
Annotation = 注釈
J2SE 5.0 (Tiger) から登場した新しい技術
ソースコード中にメタデータを加える。
EJB 3.0 では、POJO / POJI に Annotation を加
えて、開発すべきプログラムや設定ファイルを減
らすことができる。
28
軽量コンテナ
軽量コンテナ = POJO を対象としたコン
テナ
EJB 3.0 用のコンテナは軽量コンテナとな
る
Spring Framework, Seaser2 などで既に
使われている技術
29
Dependency Injection (1)
従来のEJB
EJBがコンテナから必要な情報を取得する
EJB 3.0 では
コンテナがEJBに必要な情報を与える (=
Dependency Injection = DI = 依存性注入)
Annotation を利用する
コンポーネント間の依存性を減らすことができる
30
Dependency Injection (2)
もともとは Inverse of Control (= IoC = 制
御の反転) と呼ばれていた。
Martin Fowler が “Dependency Injection”
と呼ぶことを提唱
31
EJBの現在
JSR 220 で仕様策定
http://www.jcp.org/en/jsr/detail?id=220
2006年5月に Java EE 5 とともに正式リ
リース
参照実装は Project GlassFish
32
EJB 3.0 の仕様
EJB 3.0 Simplified API
Java Persistence API
EJB 3.0 のAPI (永続化APIをのぞく)
永続化API
将来的には、Java SEでも利用される予定。
EJB Core Contracts and Requirements
EJBのアーキテクチャについて
33
© Copyright 2026 ExpyDoc