S2.4 & S2EJB3Unit 中村( taedium ). Seasar 2.4 の特徴 1 Sesar 2.4 は EJB 3.0 を実 装しています。 EJB 3.0 の仕様は 5 月 12 日に Final Release されたばかりの新しい技 術です。

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
8-4 Google マップの利用 1.地図を表示 ( エミュレータでも可能 ) Android API キーを取得しておくこと。 【 AndroidManifest.xml 】 ・・・
Scala + Liftフレームワーク その2.
Apache Camel Data Format Component Apache Camel
社会人学習講座 「Javaプログラミング概論」
DBを 256倍 活用する方法 ~S2Dao PHP/.NET/Java.
JPAを利用した RESTful Webサービスの開発
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
Relation Mapping EJB 3.0 コース 第9回 2006年8月6日.
Apache Camel Data Format Component Apache Camel
WebサービスII (第10回) 2007年11月28日 植田龍男.
Servlet J2EE I 第8回 /
Apache Camel Data Format Component Apache Camel
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
JavaServlet&JSP入門 01K0018 中村太一.
WebサービスII (第8回) 2007年11月14日 植田龍男.
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
30分で解るJiniTM テクノロジー ~えっ、ドラえもん?~
Stateful Session Beans
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
Javaによる Webアプリケーション入門 第6回
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Jakarta Struts (2) ソフトウェア特論 第11回.
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
アプリケーション依存の先読みが可能なO/Rマッピングツール
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第8回
Javaによる Webアプリケーション入門 第4回
Annotation EJB 3.0 コース 第3回 2006年8月4日.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
ソフトウェア制作論 平成30年11月28日.
稚内北星学園大学 情報メディア学部 安藤 友晴
統合開発環境のための プログラミング言語拡張 フレームワーク
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
やさしく理解するはじめてのJPA JPAの使い方 川場 隆 活水女子大学. やさしく理解するはじめてのJPA JPAの使い方 川場 隆 活水女子大学.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
5-6 SurfaceView による高速描画 (1)SurfaceViewを使う A. SurfaceView とは
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

S2.4 & S2EJB3Unit 中村( taedium )

Seasar 2.4 の特徴 1 Sesar 2.4 は EJB 3.0 を実 装しています。 EJB 3.0 の仕様は 5 月 12 日に Final Release されたばかりの新しい技 術です。

Seasar 2.4 の特徴 2 Sesar2.4 では EJB 3.0 に加え O/R マッピン グ機能の標準である Java Persistence API ( JPA )を使うこともできます。 Sesar2.4 で JPA を使うには Hibernate と連 携するための S2Hibernate-JPA を 利用します。

EJB 3.0 や JPA は使える技術? 以前の EJB に比べるとずいぶん使いやすく なっている。アノテーションを使った設 定がわかりやすい。 –EJB 3.0 : DI コンテナに慣れている人には問題 なく受け入れられるはず。 –JPA : Hibernate に慣れている人には問題なく 受け入れられるはず。 ただ …

問題点 1. EJB は サーバにデプロイ しないと動かせ ない。 2. EJB は 単体テストがしにくい 。 JPA の エンティティのデータを比較するテストが面倒。 3. EJB 3.0 はインターセプタの 機能が貧弱。 JPA は SQL を使いにくい 。

Seasar の対応 1 EJB はサーバにデプロイしないと動かせな い。 Seasar 2.4 は サーバにデプロイ しなくても EJB 3.0 のコンポーネン トを動かすことを可能にする。

Seasar の対応 2 EJB は単体テストがしにくい。 JPA のエン ティティのデータを比較するテストが面 倒。 Seasar 2.4 は JUnit を拡張した S2EJB3Unit を提供し、 EJB 3.0 や JPA を使ったプログラムの単体テストを簡 単する。

Seasar の対応 3 EJB 3.0 はインターセプタの機能が貧弱。 JPA は SQL が使いにくい。 Seasar 2.4 は EJB 3.0 の足りない機能を 補い拡張 できる。

ここで簡単にまとめ

Sesar2.4 では Java の標準技術である EJB 3.0 と Java Persistence API が 使える。 Sesar2.4 は さらに これらを より使いやすく する 。

Sesar 2.4 で EJB

Sesar 2.4 で EJB 3.0 を動かす EJB 3.0 を使った開発の基 本は DI コンテナを使うと きと同じ。 インタフェースに対して プログラミングする。

Sesar 2.4 で EJB 3.0 を動かす public interface Greeting { String greet(); } public interface GreetingClient { void execute(); } 1. まず、インタフェースを 作成。

@Stateless public class GreetingImpl implements Greeting { public String greet() { return "Hello World!"; public class GreetingClientImpl implements GreetingClient private Greeting greeting; public void execute() { System.out.println(greeting.greet()); } フィールドインジェクション Context ctx = new InitialContext(); GreetingClient greetingClient = (GreetingClient) ctx.lookup("greetingClient"); greetingClient.execute(); 2. 実装クラスに EJB 3.0 のアノテーションをつ ける。 3. DI するためにアノ テーションを付ける。 4.JNDI で lookup して 実行。

S2EJB3Unit とは JUnit の拡張版。 EJB に対するテストを行う。 JPA を使った DAO のテストを行う。 JPA のエンティティのテストを行う。

S2EJB3Unit の特徴 1 DI の指定 public class HogeTest extends S2EJB3TestCase private GreetingClient private GreetingClient greetingClient2; で DI する。

S2EJB3Unit の特徴 2 DI されるコンポートの指定 public class HogeTest extends S2EJB3TestCase private GreetingClient public void setUp() throws Exception { super.setUp(); include("examples/ejb3/dicon/GreetingMain.dicon"); register(GreetingImpl.class); } DI されるコンポーネント は設定ファイルを使って まとめて、もしくはクラ スごとに登録できる。

S2EJB3Unit の特徴 3 ロールバックをアノテーションで指定 public class HogeTest extends S2EJB3TestCase public void testFindEmployee() { //…DB アクセス処理 で test メソッド開始前にトランザク ションを開始しメソッド終了後にトランザク ションをロールバックする。 →DB を汚さずに すむ。

S2EJB3Unit の特徴 4 EntityManager の取得 public class HogeTest extends S2EJB3TestCase public void testFindEmployee() { getEntityManager().find(Employee.class, new Long(1)); } Java Persistence API の EntityManager が getter で取 得するだけで使える。

S2EJB3Unit の特徴 5 準備値( Excel データ) 、期待値( Excel データ)、実際値(エンティ ティ) public class GreetingClientImplTest extends S2EJB3TestCase public void testFindEmployee() { readXlsWriteDb("Prepare.xls"); DataSet expected = readXls("findEmployeeResult.xls"); Employee actual = getEntityManager().find(Employee.class, new Long(1)); assertEntityEquals("0", expected, actual); } テストデータは Excel で用 意して DB に書き込む。 テストの期待値は Excel で 用意する。 期待値と Entity のデータを 比較するアサートメソッ ド。

S2EJB3Unit の特徴 6 更新の検証 public class GreetingClientImplTest extends S2EJB3TestCase public void testUpdateEmployee() { readXlsWriteDb("Prepare.xls"); DataSet expected = readXls("updateEmployeeResult.xls"); Employee employee = getEntityManager().find(Employee.class, new Long(2)); employee.setSalary(9999); assertEquals("0", expected, reload(expected)); } EmployeeEntity を更新。 DataSet 同士を比較する。 DB を更新し期待値のデータ を読み直す。

S2EJB3Unit を動かしてみる 実際に S2EJB3Unit を動かして見ます。

テーブルとエンティティのマッピ ング Employee エンティティ Department エンティティ Address エンティティ 0.. 11 1 0..*

テーブルとエンティティの比較 1 エンティティ単体 (もしくリスト)を DB データと比較する ターゲットとなるエン ティティの値のみを比較 する。

テーブルとエンティティの比較 2 エンティティ単体 (もしくはリスト) のリレーションシッ プを含めて DB データ と比較する ターゲットとなるエ ンティティから辿れ るリレーションも比 較対象とする。

テーブルとエンティティの比較 3 Java 上で参照があれ ば逆向きにも辿るこ とができる。遅延 ローディングにも対 応。 クエリで Department を取 得した場合、 Employee は 遅延ローディングされる が Employee も比較可能。

複雑なマッピングにも対応 ポリモーフィズ ムを使ったマッ ピングに対して もデータの比較 が可能。 0.. 11 1 0..* 11 0.. 1

エンティティの更新 エンティティ単体 (もしくリスト)を DB データと比較する ターゲットとなるエン ティティの値のみを比較 する。