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