• 検索結果がありません。

DTO を やり取りする

ドキュメント内 Microsoft PowerPoint - sc2007spring_Aa1_Kuina.ppt (ページ 47-60)

入出力中心のアプリケーションの場合 入出力中心のアプリケーションの場合

業務ロジックがほとんどない

バリデーションやデータの型変換などはある

キャッシュの仕組みは不要

入力時は、更新メソッドを呼べばよい

出力時は、画面に合わせて必要なデータを取得すればよい

• 2

種類のマッピングがあれば

OK

テーブルとオブジェクトのマッピング

任意の結果セットとオブジェクトのマッピング

S2Dao DB

プレゼン テーション

DTO

ロジックロジック

評価・加工が中心のアプリケーションの場合 評価・加工が中心のアプリケーションの場合

同一テーブルの同一レコードがトランザクション内で複数のロジックにまた がって何度もアクセスされる

必要毎の

DB

アクセスは避けたい→永続永続永続永続コンテキストコンテキストコンテキストコンテキストでのキャッシュ

同一テーブルの同一レコードがトランザクション内でさまざまに変更される

変更毎の

DB

アクセスは避けたい→コミット時の永続永続永続永続コンテキストコンテキストコンテキストコンテキストのフラッシュ

データにグループ化や階層構造が必要

リレーションシップリレーションシップリレーションシップリレーションシップののマッピングマッピングマッピングマッピング

JPA

実装

Kuina-Dao DB

永続コンテキスト プレゼン

テーション ロジック

エンティティを管理

トランザクション境界

ロジック

評価・加工が中心のアプリケーションの例 評価・加工が中心のアプリケーションの例

• シミュレーション系アプリ(例えば生産管理のスケジューリング)

一度のトランザクションで何度も変更されるエンティティ

所要量

タスク

スケジュール

在庫

一度のトランザクションで何度もアクセスされるエンティティ

スケジュール

タスク

リソース

能力

部品

部品構成

在庫

• JPA が効果的なアプリケーションには Kuina-Dao も効果的

– Kuina-Dao

JPA

を使いやすくするフレームワーク

• JPA の使いどころ

永続コンテキスト

• DB

アクセスを減らすための仕組み(キャッシュ・コミット時のフラッシュ)が備 わっている

アプリケーションをシンプルに保てる

管理すべき

SQL

を減らせる

リレーションシップのマッピング

データのまとまりや階層構造(

1

対多・多対

1

)をロジックで扱える

ツール(

IDE

IDE

のプラグインなど)のサポート

エンティティの自動生成

エンティティの編集補完

設定ファイルの自動生成

Kuina

Kuina - - Dao Dao の使いどころ の使いどころ – – まとめ まとめ

評価・加工が中心ならば

評価・加工が中心ならば Kuina Kuina - - Daoで Dao で

Kuina

Kuina - - Dao Dao の の の の使 の の の の使 使 使 使いどころ 使 使 使いどころ いどころ いどころ いどころ いどころ いどころ いどころ アドバンスド アドバンスド アドバンスド アドバンスド アドバンスド アドバンスド アドバンスド アドバンスド

Kuina

Kuina - - Dao Dao の使いどころ の使いどころ アドバンスド アドバンスド

S2Dao

S2Dao で入出力中心のアプリケーション で入出力中心のアプリケーション

• DTO の管理が煩雑

画面が増えると対応して

DTO

DAO

が増える

S2Dao DB

プレゼン テーション

DTO

やり取りする

トランザクション境界

ロジック

プレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーション

Kuina

Kuina - - Dao Dao で入出力中心のアプリケーション で入出力中心のアプリケーション

• エンティティをそのまま表示すれば OK

画面が増えても

DTO

を管理する必要がない。でも

ロジック

プレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーション

JPA

実装

Kuina-Dao DB

永続コンテキスト

エンティティを管理

トランザクション境界

エンティティを表示

遅延ローディングにどう対応するか 遅延ローディングにどう対応するか

a. あらかじめアクセスしておく

b. フェッチタイプを Eager に設定しておく c. Transaction View

d. Entity Manager per Request

e. DTO に変換

遅延ローディングにどう対応するか

遅延ローディングにどう対応するか ‐‐ ベストプラクティスベストプラクティス

• フェッチタイプはすべて Lazy に設定しておく

– @ManyToOne(fetch = FetchType. LAZY )

• 必要なものだけ Fetch Join で取得する

– Kuina-Dao では簡単に Fetch Join するための仕組みを提供

• @Distinct

@FetchJoin(joinSpec = JoinSpec.LEFT_OUTER_JOIN, value = “emps”) List<Dept> findByLoc(String loc);

– もちろん JPQL を書いても OK

• SELECT DISTINCT dept FROM Dept AS dept LEFT OUTER JOIN FETCH

dept.emps WHERE (dept.loc = :loc)

Kuina

Kuina- - Dao Dao の使いどころ の使いどころ アドバンスド アドバンスド – – まとめ まとめ

エンティティを直接参照する形は今後 Teeda がサポート

ロジック

プレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーションプレゼン

テーションプレゼン テーション

Teeda

Page

クラス

JPA

実装

Kuina-Dao DB

永続コンテキスト

エンティティを管理

トランザクション境界

エンティティを表示

@FetchJoinで必要なエ ンティティだけを取得

ロードマップ ロードマップ ロードマップ ロードマップ ロードマップ ロードマップ ロードマップ ロードマップ

ロードマップ

ロードマップ

Kuina

Kuina -Dao - Dao 関連プロダクトのロードマップ 関連プロダクトのロードマップ

• 現在

– 2007 年 5 月 S2TopLink-JPA 1.0-r3 リリース – 2007 年 5 月 S2Hibernate-JPA 1.0 リリース – 2007 年 5 月 Kuina-Dao 1.0 リリース

• 予定

– 2007 年 9 月 S2TopLink-JPA 1.0 リリース予定 – 2007 年 x 月 S2OpenJPA 1.0 リリース予定

– 2007 年 x 月 S2Cayenne-JPA 1.0 リリース予定 皆

皆 皆

皆さんの さんの さんの さんの要望 要望 要望を 要望 を を受 を 受 受 受け け け け付 付 付 付けています けています けています けています! ! ! !

Kuina

Kuina - - Dao Dao の関連情報 の関連情報

ドキュメント

– http://kuina.seasar.org/ja/

書籍

– Java Expert #01

• http://www.amazon.co.jp/Java-Expert-01-

編集部

/dp/4774130702/

メーリングリスト

– Seasar user

メーリングリスト

[email protected]

– JPA

メーリングリスト

[email protected]

サンプル(テストコード)

– SVN

リポジトリ

• https://www.seasar.org/svn/kuina/trunk/kuina-dao-it

ツール

– Dolteng

どぅるてん

• http://www.seasar.org/wiki/index.php?Dolteng

ドキュメント内 Microsoft PowerPoint - sc2007spring_Aa1_Kuina.ppt (ページ 47-60)

関連したドキュメント