1 / 33

EJB 3.0 コース

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 ページ.

pink
Download Presentation

EJB 3.0 コース

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation 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-summer-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 SavingsAccountBean implements 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 / POJI になる • POJO / POJI は単体テストも簡単

  28. Annotation の利用 • Annotation = 注釈 • J2SE 5.0 (Tiger) から登場した新しい技術 • ソースコード中にメタデータを加える。 • EJB 3.0 では、POJO / POJI に Annotation を加えて、開発すべきプログラムや設定ファイルを減らすことができる。

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

More Related