ejb 3.0 コース

33
1 EJB 3.0 コココ コココココココ in ココ 2005/08/06 ココココココココ コココ ココ ココ

Upload: pink

Post on 13-Jan-2016

53 views

Category:

Documents


0 download

DESCRIPTION

EJB 3.0 コース. サマースクール in 稚内 2005/08/06 稚内北星学園大学 助教授 安藤 友晴. 本講座の目標. EJB 3.0 の基本事項を理解する. 講義予定 (1). 8/6 J2EE と EJB 8/7 Annotation Stateless Session Beans Statefull Session Beans. 講義予定 (2). 8/8 O/R Mapping Entity Bean 8/9 Relation Mapping 8/10 まとめ. 本講座の Web ページ. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: EJB 3.0  コース

1

EJB 3.0 コース

サマースクール in 稚内2005/08/06

稚内北星学園大学助教授

安藤 友晴

Page 2: EJB 3.0  コース

2

本講座の目標 EJB 3.0 の基本事項を理解する

Page 3: EJB 3.0  コース

3

講義予定 (1) 8/6

J2EE と EJB 8/7

Annotation Stateless Session Beans Statefull Session Beans

Page 4: EJB 3.0  コース

4

講義予定 (2) 8/8

O/R Mapping Entity Bean

8/9 Relation Mapping

8/10 まとめ

Page 5: EJB 3.0  コース

5

本講座の Web ページ www.wakhok.ac.jp/~tomoharu/ejb3-summ

er-2005/

Page 6: EJB 3.0  コース

6

J2EE と EJB

Page 7: EJB 3.0  コース

7

Webアプリケーション Webアプリケーションとは、「ユーザが

Webブラウザを使って何かを入力し、必要な結果を得る」Webページ。サーチエンジン本の検索商品の購入掲示板など

Page 8: EJB 3.0  コース

8

なぜWebアプリケーションか アプリケーションを使う側の理由

特定のソフトをインストールしなくても、 Web ブラウザがあれば良い。

操作は簡単。 アプリケーションを提供する側の理由

集中管理できるので楽。

Page 9: EJB 3.0  コース

9

データベースの利用 Web アプリケーションは「データ」を処理す

る。 図書データ 在庫リスト 掲示板の記事

「データ」は保存されている。 データベースを使うと面倒がなくて良い

データをただのファイルで保存しておくと、遅いし面倒

Page 10: EJB 3.0  コース

10

J2EEの基本モデル J2EEは「データベース」を使った「Webアプリケーション」の作成を念頭に置いている技術

Page 11: EJB 3.0  コース

11

EJB とは何か? EJB = Enterprise JavaBeans 「ビジネスロジック」や「データの永続

化」をコンポーネント化したもの ビジネスロジック = アプリケーションの本

質的な処理 データの永続化 = メモリ上のデータをファ

イルシステム上に保存して、プログラムが終了してもデータは残るようにする

EJB は「 EJB コンテナ」上で動作する

Page 12: EJB 3.0  コース

12

3種類の EJB Session Beans Entity Beans Message-driven Beans

Page 13: EJB 3.0  コース

13

Session Beans (1) クライアントが必要に応じて呼び出す処

理をまとめたもの クライアントの特定のセッションに対応 セッション開始と同時に生成され、セッ

ション終了時に消滅

Page 14: EJB 3.0  コース

14

Session Beans (2) Stateless Session Beans

インスタンスに固有のフィールドがないため内部状態を持たず、ユーティリティクラスのように振る舞う

Statefull Session Beans 内部状態を持っている

Page 15: EJB 3.0  コース

15

Entity Beans 「永続化」されているデータとの対応に

用いるもの O/R マッピング リレーショナルデータベースの1行と、

Entity Bean の一つのインスタンスが対応する

リレーショナルデータベースと Entity Bean の間で同期が行われる

Page 16: EJB 3.0  コース

16

Message-driven Beans Java Message Service (JMS) でのメッ

セージを非同期に処理するためのもの

Page 17: EJB 3.0  コース

17

EJB 批判

Page 18: EJB 3.0  コース

18

EJB に対する批判 EJB は、普及しつつも、常にさまざまな

批判にさらされてきた。 例 : 「従来の EJB は存在自体が間違い

だった」 http://itpro.nikkeibp.co.jp/free/NSW/NEWS/

20050621/163065/ By Rod Johnson (Spring Framework の作者 )

/ 2005.06.21

Page 19: EJB 3.0  コース

19

EJB批判のポイント 複雑すぎる 制約が多すぎ

Page 20: EJB 3.0  コース

20

複雑すぎる 作成するプログラムがたくさん

Home インタフェース Remote インタフェース実装クラス

設定すべき項目もたくさんそれぞれの関係性がわかりにくい

Page 21: EJB 3.0  コース

21

制約が多すぎ EJB のプログラムは、コンテナに依存し

きったものになりがち コンテナから必要な情報を取得する 「 Remote インタフェースは EJBObject を継承する」といったような多数の制約

そのため、単体テストが困難 「テストファースト」の時代なのに

Page 22: EJB 3.0  コース

22

そんな EJB の替わりとして 多くのソフトウェアが利用されている 軽量コンテナ

Spring Framework HiveMind Seaser2

O/R マッピング Hibernate TopLink Cayenne

Page 23: EJB 3.0  コース

23

EJB 3.0 の登場

Page 24: EJB 3.0  コース

24

EJB 3.0これまでの EJB 批判を受け止め?、大幅に仕様を変更 EoD (Ease of Development) を実現できそう EJB コンテナは DI (Dependency Injection) コ

ンテナに

Page 25: EJB 3.0  コース

25

“EoD” という考え方 Ease of Development = 開発の容易性 「いかにラクにソフトウェアを開発する

か」 一昨年くらいから多用されているコトバ最近の Java技術は EoDの考え方を基本

としているものが多い。 J2SE 5.0 (Tiger), JSF, EJB 3.0, …

Page 26: EJB 3.0  コース

26

POJO と POJI (1)従来の Entity Bean Remote インタフェースを継承したインタ

フェースpublic interface SavingsAccount

extends EJBObject {} EntityBean インタフェースを実装したクラス

public class SavingsAccountBeanimplements EntityBean {}

EJB独自の規則に従ったオブジェクトになる

Page 27: EJB 3.0  コース

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 は単体テストも簡単

Page 28: EJB 3.0  コース

28

Annotation の利用 Annotation = 注釈 J2SE 5.0 (Tiger) から登場した新しい技術

ソースコード中にメタデータを加える。 EJB 3.0 では、 POJO / POJI に Annotati

on を加えて、開発すべきプログラムや設定ファイルを減らすことができる。

Page 29: EJB 3.0  コース

29

軽量コンテナ軽量コンテナ = POJO を対象としたコン

テナ EJB 3.0 用のコンテナは軽量コンテナとな

る Spring Framework, Seaser2 などで既に使

われている技術

Page 30: EJB 3.0  コース

30

Dependency Injection (1) 従来の EJB

EJB がコンテナから必要な情報を取得する EJB 3.0 では

コンテナが EJB に必要な情報を与える (= Dependency Injection = DI = 依存性注入 )

コンポーネント間の依存性を減らすことができる

Page 31: EJB 3.0  コース

31

Dependency Injection (2) もともとは Inverse of Control (= IoC =

制御の反転 ) と呼ばれていた。 Martin Fowler が “ Dependency Injection”

と呼ぶことを提唱

Page 32: EJB 3.0  コース

32

EJB の現在 JSR 220 で仕様策定が進められている

http://www.jcp.org/en/jsr/detail?id=220現在、 Public Review 2006年初頭には Java EE 5 とともに正式リリース予定

Page 33: EJB 3.0  コース

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 コンテナの実装について