EJB 3.0 コース
サマースクール in 稚内
2005/08/06
稚内北星学園大学
助教授
安藤 友晴
1
本講座の目標
EJB 3.0 の基本事項を理解する
2
講義予定 (1)
8/6
J2EE と EJB
8/7
Annotation
Stateless Session Beans
Statefull Session Beans
3
講義予定 (2)
8/8
O/R Mapping
Entity Bean
8/9
Relation Mapping
8/10
まとめ
4
本講座のWebページ
www.wakhok.ac.jp/~tomoharu/ejb3summer-2005/
5
J2EE と EJB
6
Webアプリケーション
Webアプリケーションとは、「ユーザがWebブ
ラウザを使って何かを入力し、必要な結果を
得る」Webページ。
サーチエンジン
本の検索
商品の購入
掲示板など
7
なぜWebアプリケーションか
アプリケーションを使う側の理由
特定のソフトをインストールしなくても、
Webブラウザがあれば良い。
操作は簡単。
アプリケーションを提供する側の理由
集中管理できるので楽。
8
データベースの利用
Webアプリケーションは「データ」を処理する。
図書データ
在庫リスト
掲示板の記事
「データ」は保存されている。
データベースを使うと面倒がなくて良い
データをただのファイルで保存しておくと、遅
いし面倒
9
J2EEの基本モデル
J2EEは「データベース」を使った「Webアプリ
ケーション」の作成を念頭に置いている技術
10
EJB とは何か?
EJB = Enterprise JavaBeans
「ビジネスロジック」や「データの永続化」をコ
ンポーネント化したもの
ビジネスロジック = アプリケーションの本質的な
処理
データの永続化 = メモリ上のデータをファイルシ
ステム上に保存して、プログラムが終了しても
データは残るようにする
EJB は「EJBコンテナ」上で動作する
11
3種類のEJB
Session Beans
Entity Beans
Message-driven Beans
12
Session Beans (1)
クライアントが必要に応じて呼び出す処理を
まとめたもの
クライアントの特定のセッションに対応
セッション開始と同時に生成され、セッション
終了時に消滅
13
Session Beans (2)
Stateless Session Beans
インスタンスに固有のフィールドがないため内
部状態を持たず、ユーティリティクラスのように
振る舞う
Statefull Session Beans
内部状態を持っている
14
Entity Beans
「永続化」されているデータとの対応に用い
るもの
O/Rマッピング
リレーショナルデータベースの1行と、Entity
Bean の一つのインスタンスが対応する
リレーショナルデータベースと Entity Bean
の間で同期が行われる
15
Message-driven Beans
Java Message Service (JMS)でのメッセージ
を非同期に処理するためのもの
16
EJB批判
17
EJBに対する批判
EJBは、普及しつつも、常にさまざまな批判
にさらされてきた。
例:「従来のEJBは存在自体が間違いだった」
http://itpro.nikkeibp.co.jp/free/NSW/NEWS/20
050621/163065/
By Rod Johnson (Spring Framework の作者) /
2005.06.21
18
EJB批判のポイント
複雑すぎる
制約が多すぎ
19
複雑すぎる
作成するプログラムがたくさん
Home インタフェース
Remote インタフェース
実装クラス
設定すべき項目もたくさん
それぞれの関係性がわかりにくい
20
制約が多すぎ
EJBのプログラムは、コンテナに依存しきった
ものになりがち
コンテナから必要な情報を取得する
「Remoteインタフェースは EJBObject を継承す
る」といったような多数の制約
そのため、単体テストが困難
「テストファースト」の時代なのに
21
そんなEJBの替わりとして
多くのソフトウェアが利用されている
軽量コンテナ
Spring Framework
HiveMind
Seaser2
O/Rマッピング
Hibernate
TopLink
Cayenne
22
EJB 3.0 の登場
23
EJB 3.0
これまでの EJB 批判を受け止め?、大幅に
仕様を変更
EoD (Ease of Development) を実現できそう
EJBコンテナは DI (Dependency Injection) コンテ
ナに
24
“EoD” という考え方
Ease of Development = 開発の容易性
「いかにラクにソフトウェアを開発するか」
一昨年くらいから多用されているコトバ
最近のJava技術はEoDの考え方を基本とし
ているものが多い。
J2SE 5.0 (Tiger), JSF, EJB 3.0, …
25
POJO と POJI (1)
従来のEntity Bean
Remoteインタフェースを継承したインタフェース
public interface SavingsAccount
extends EJBObject {}
EntityBean インタフェースを実装したクラス
public class SavingsAccountBean
implements EntityBean {}
EJB独自の規則に従ったオブジェクトになる
26
POJO と POJI (2)
EJB 3.0 では
POJO = Plain Old Java Object
「普通の」Javaオブジェクト
POJI = Plain Old Java Interface
「普通の」Javaインタフェース
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 = 依存性注入)
コンポーネント間の依存性を減らすことができる
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
現在、Public Review
2006年初頭には Java EE 5 とともに正式リ
リース予定
32
EJB 3.0 の仕様
EJB 3.0 Simplified API
EJB 3.0 のAPI (永続化APIをのぞく)
Java Persistence API
永続化API
将来的には、J2SEでも利用される予定。
EJB Core Contracts and Requirements
EJBコンテナの実装について
33
© Copyright 2026 ExpyDoc