26
DBとアプリとDB2つなぐ架け橋 DBFlute 久保 雅彦 jflute

DBFlute Bridge on ClubDB2

Embed Size (px)

Citation preview

Page 1: DBFlute Bridge on ClubDB2

DBとアプリとDB2を

つなぐ架け橋

DBFlute 久保 雅彦 jflute

Page 2: DBFlute Bridge on ClubDB2

jfluteとは?

久保 雅彦(オープンソースプログラマー)

! DBFluteの作者(メインコミッタ)

!   S2Dao/Teedaコミッタ

! Seasar.NETコミッタ&リーダー

!   jfluteの日記 (http://d.hatena.ne.jp/jflute/)

!   Twitter: jflute / Facebook: dbflute

Page 3: DBFlute Bridge on ClubDB2

久保とは?

フリープログラマー

!   (主にJavaの)開発現場でのフォローイング !   アーキテクチャ設計、実装 !   開発プロセスの改善(環境改善) !   DB設計アドバイス ! DBFluteの導入支援、実装支援

!   エンジニアの二次成長の支援(教育) !   ハンズオンによる思考力アップ! !   エンジニアはもう一度成長できる!

Page 4: DBFlute Bridge on ClubDB2

実績は?

!   株式会社レイハウオリ様 !   中途新人の研修・現場でのフォローイング !   OSS導入支援サービス

!   株式会社ビズリーチ様 ! DBFlute導入・最適化フォロー、開発環境改善支援 !   アーキテクチャ設計・実装(SAStrutsの拡張など) !   中途エンジニアのDBFluteハンズオン、現場フォロー !   新卒エンジニアの研修フォロー、Java&DBFluteハンズオン

!   株式会社ルクサ様 ! DBFlute導入・最適化フォロー、開発環境改善支援 ! DBFluteハンズオン、現場フォロー

※名前の出せる企業様のみ掲載

Page 5: DBFlute Bridge on ClubDB2

DBFluteとは?

!  アプリ内でのDBアクセスの支援

!  開発環境でのDB管理の支援

Page 6: DBFlute Bridge on ClubDB2

DBFluteの特徴は?

スピードの速いビジネス変化 に耐えられる開発環境の支援に特化

DB変更に強い

Page 7: DBFlute Bridge on ClubDB2

DBFluteのターゲット

! BtoCなどのサービス開発(事業会社) !   リーン・スタートアップ !   インクリメンタル開発

!   DB設計と実装の同時開発

※ビジネスのための泥臭いツールである

Page 8: DBFlute Bridge on ClubDB2

ふーん

Page 9: DBFlute Bridge on ClubDB2

DBFluteは変えたい

 DBサイドとアプリサイドの

     ギャップ

Page 10: DBFlute Bridge on ClubDB2

ギャップって?

DBサイド:DB設計、DBインフラ アプリサイド:アプリ開発

互いが互いに責め合う (T T

Page 11: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その1

DB設計の意図が

アプリ側に伝わらない

Page 12: DBFlute Bridge on ClubDB2

DBFluteはDBを伝える!

! SchemaHTMLでテーブル定義の自動生成 !   メンテナンス不要 (DBコメント重視)

!   気楽に開けるHTML形式

!   DB定義をJavaDocコメントに

!   DBコメントをJavaDocコメントに

Page 13: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その2

アプリ側の都合に関係なく

DB変更される

Page 14: DBFlute Bridge on ClubDB2

DBFluteはDB変更につおい!

!   タイプセーフAPIでDB変更の影響範囲検知

!   2WaySQLの外だしSQLで一括実行で検知

!   最新DB構造の横展開を自動化 (ReplaceSchema) !   テストデータの一元管理

!   というか一番のこだわり

Page 15: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その3

というか、DB変更の内容が

アプリ側に伝わらない

Page 16: DBFlute Bridge on ClubDB2

DBFluteはDB変更を伝える!

! HistoryHTMLで履歴ドキュメントを自動生成

! JavaDocコメントやSchemaHTML

Page 17: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その4

アプリ側が

ぐるぐると回す

Page 18: DBFlute Bridge on ClubDB2

DBFluteは明示主義

!   関連テーブルは取りたいものを明示

!   getメソッドでのLazyLoadはしない

!   SQLの発行回数を数えるための拡張ポイント

Page 19: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その5

本番と結合と開発で、

スキーマ構造が違う!

Page 20: DBFlute Bridge on ClubDB2

DBFluteは差分大好き

! HistoryHTMLでDB変更の歴史を振り返れる

! AlterCheckでAlter文の整合性をチェック

! SchemaSyncCheckで二つのDBの差分をチェック

Page 21: DBFlute Bridge on ClubDB2

DBサイドとアプリサイドの ギャップ その6

アプリ屋さんよぅ…

パフォーマンス考慮お願い

Page 22: DBFlute Bridge on ClubDB2

DBFluteはSQLを大切に

!   CBで出力されるSQLの見た目は超大事

!   発行されたSQLの実行時間をログに

!   カラムのIndex情報をJavaDocに

!   SQLを発行したクラスをログに

!   SQLを発行した機能をコメントに埋め込み!?

Page 23: DBFlute Bridge on ClubDB2

DBFluteは芸が細かい

!   マッピングでリフレクションは使わない

!   EntityのSetter呼び出し情報でupdate文を構築

!   ページングでのSQL発行回数制御

!   プロシージャにもつおい!

!   もちろん、バインド変数ですよ

Page 24: DBFlute Bridge on ClubDB2

DBサイドとアプリサイド

どっちもWinWinになってこそ、

お客様も最高のシステムに

出会えるはず

Page 25: DBFlute Bridge on ClubDB2

架け橋

そのためのツール、

選んでみませんか?

Page 26: DBFlute Bridge on ClubDB2

ちょっと告知

10月19日(土) 13:00から17:00(+懇談会)

ビズリーチ、ガーデン広場にて

DBFluteガーデンフェス

を開催