Spring RooによるDDDの実践 ~ 第2回 Spring Rooのアーキテクチャ ~



Similar documents
もくじ

おすすめページ

PowerPoint プレゼンテーション

日本語版目次 アーキテクチャに関するパターン : P035 振る舞いに関する問題 : P040 データの読み込み : P042 構造的なマッピングに関するパターン : P043 関係のマッピング : P043 継承 : P047 マッピングの構築 : P050 2 重のマッピング : P051 メタ

スライド 0

Office 10 パッケージ版「リンク集」

スライド 1

5-1- 基 開 発 フレームワークに 関 する 知 識 現 在 普 及 が 期 待 されている 開 発 フレームワークの 実 際 の 開 発 運 用 Ⅰ. 概 要 の 際 に 必 要 な 管 理 知 識 手 法 の 種 類 と 特 徴 内 容 を 理 解 し 必 要 なノ ウハウを 実 務 レベル

オートビズにPayPalを対応させる方法

Microsoft Word - Start Up Guide1 .docx

-.HPOP について HPOP(ホームページオプション )とは お 客 様 のHPとプロ エージェント を 連 動 させるオプションサービ スのことです 以 下 の2 種 類 を 初 期 費 用 円 / 月 額 5000 円 でそれぞれ 提 供 しています JOB 自 動 公 開 機

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ

データベースS 演習資料

PowerPoint プレゼンテーション

ファイル 管 理 ツール デザイン 設 定 >> ファイル 管 理 でアップロードされているファイルを 管 理 できます この 画 面 ではファイルの 確 認 / 移 動 / 削 除 が 可 能 です ファイルのアップロードはできません 2

参加表明書・企画提案書様式

■デザイン

Ⅰ 校 外 における 研 修 の 留 意 点 1 校 外 における 研 修 のコマ 数 の 考 え ア) 午 前 午 後 の 講 座 は 0.5 日 (0.5 コマ) イ) 全 日 の 講 座 は 1.0 日 (1.0 コマ) 2 校 外 における 研 修 として 選 択 できない 講 座 研 修

2. 事 務 連 絡 者 用 メニュー (1) 登 録 変 更 申 請 委 員 会 メンバー メンバー 個 人 情 報 企 業 情 報 の 変 更 および JIRA 会 員 を 退 会 する 場 合 こ のメニューから 各 種 申 請 を 行 います 申 請 後 変 更 内 容 を JIRA 事 務

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

機 能 概 要 概 要 平 成 24 年 度 シームレスな 地 域 連 携 医 療 の 実 現 実 証 事 業 に 対 応 するため 地 域 連 携 システム( 能 登 北 部 版 )を 構 築 する 機 能 < 機 能 追 加 変 更 一 覧 > 1. 画 像 連 携 機 能 院 内 で 撮 影

V-CUBE One

So-Cool CART マニュアル

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

PowerPoint Presentation

- INDEX - 1 ご 利 用 時 間 1 2 メニュー 1 3 ご 利 用 になる 前 に 行 っていただきたいこと 3 (1) 所 在 地 沿 線 設 定 3 (2) 会 員 情 報 の 管 理 ( 自 社 情 報 の 設 定 ) 5 4 物 件 情 報 の 登 録 8 (1) 操 作 概

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

IIJ Webスタンダードサービス

WebMail ユーザーズガイド

一 覧 表 ( 専 従 者 用 ) YES NOチャート( 専 従 月 額 単 価 用 ) (P.4)を 参 考 にしてください < 直 接 雇 用 者 > 一 覧 表 ( 専 従 者 用 )の 単 価 は 委 託 期 間 中 に 継 続 して 半 年 以 上 当 該 AMED 事 業

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

Excel 応 用 Ⅱ Excelの 知 識 をより 深 め 今 以 上 に 活 用 し 業 務 を 効 率 化 させたい 人 にお 勧 めします また 豊 富 な 問 題 演 習 で 実 務 に 活 かせるスキルを 身 につけます 容 : 複 合 グラフの 操 作 データベースの 活 用 ピボット

PowerPoint プレゼンテーション

タイトル位置

WEBメールシステム 操作手順書

ご 利 用 の 前 に 手 順 初 回 ご 利 用 時 に 必 ずご 確 認 ください ご 利 用 の 前 に (ご 利 用 環 境 の 確 認 ) P アクセス 方 法 (IMAGE WORKSサイトへアクセス) P 初 期 設 定 (JREのインストール) P

スライド 1

Microsoft PowerPoint 資料6 技術基準.ppt [互換モード]

Microsoft Word - PubMed検索マニュアル10_改訂 _.doc

目 次 必 ずお 読 みください 接 続 方 法 WEB ブラウザ 操 作 方 法 閲 覧 用 PC で 直 接 ZERO 本 体 と 接 続 する 場 合 各 ページについて 発 電 状 況 画 面 表 示... 3

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

PowerPoint プレゼンテーション

贈与税 faq

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

サーバサイドスクリプトPHPを実感しよう

ユーザーマニュアル

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

SoftBank 202F 取扱説明書

音 声 認 識 の 種 類 方 式 特 定 話 者 方 式 ( 特 定 話 者 での 学 習 が 必 要 ) 不 特 定 話 者 方 式 ( 学 習 不 要 ) 種 類 連 続 認 識 単 語 認 識 ( 限 定 語 認 識 ) 連 続 認 識 単 語 認 識 ( 限 定 語 認 識 ) 例 ) W

PowerPoint プレゼンテーション

Microsoft Word - Active.doc

<4D F736F F F696E74202D20938A8D65837D836A B A926B82CB82C182C E E >

PowerPoint プレゼンテーション

(4) ppblog188 フォルダの 名 前 を 変 更 する ここで 設 定 したフォルダ 名 は,Web ページ 上 でブログの URL(アドレ ス)に 使 用 するものとなる 半 角 英 数 字 で 分 かりやすく 設 定 する 本 資 料 では,centerblog として 設 定 する

説明会資料 JBA新会員登録システムでの登録作業

WEB版「新・相続対策マスター」(ご利用の手引き)

方程式を解いてみよう! C++ から PHP + JavaScriptへ

R4財務対応障害一覧

ファイル 管 理 ツール デザイン 設 定 >> ファイル 管 理 でカートにアップロードされているファイルを 管 理 できます この 画 面 ではファイルの 確 認 / 移 動 / 削 除 が 可 能 です ファイルのアップロードはできません 2

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用)

H28記入説明書(納付金・調整金)8

ez_meishi.ppt

目 次 はじめに.... デジカメからの 画 像 取 込 画 像 情 報 の 登 録 部 位 の 設 定 目 的 の 設 定 目 的 の 追 加 画 像 情 報 の 登 録 ( 備 考 の 設 定 ) 備 考

社会保険等に加入しましょう -みんなで取り組む保険加入-

Microsoft PowerPoint - webサイト更新マニュアル ppt [互換モード]

Microsoft Word - 第3章.doc

新退職給付会計基準 実務の観点からの最終チェック

1

管理画面マニュアル(1.0.9)

<4D F736F F D208AEB8CAF89D38F8A B E64726F696494C DEC837D836A B2E646F6378>

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

SPARQL Finder設置方法

エ シラバスの 公 開 サイトはレスポンシブ 対 応 ( 様 々な 種 類 の 機 器 や 画 面 サイズに 単 一 のファイルで 対 応 )しているこ オ 教 員, 職 員 の 利 用 グループを 作 成 し,グループ 毎 に 予 め 設 定 した 権 限 ( 利 用 メニューやマスタメンテナンス

CMS操作手順書

目 次 はじめに キャンパスメールを 利 用 するには キャンパスメール 利 用 申 請 を 行 う アカウント 有 効 化 (アクティベーション)を 行 う メールの 利 用 WEB ブラウザからメールを 利 用

~ 目 次 ~ 1. 履 修 登 録 のながれ 1 2. 利 用 可 能 な 機 能 について 2 3.Web 履 修 登 録 画 面 へのログイン ログアウト 方 法 3 4. 予 備 登 録 ( 定 員 設 定 科 目 の 履 修 ) (1) 予 備 登 録 5 (2) 予 備 登 録 状 況

< B838B CC8F898AFA90DD92E82E786C73>

Microsoft PowerPoint - MOSA IP-PBX 日系企業運用提案(日文版)_ (3).ppt [兼容模式]

横型:「an」PowerPoint(背景・白)

名 刺 Scan とは 名 刺 Scan 情 報 を 顧 客 パーソン 情 報 として 登 録 する 名 刺 Scan とは 複 合 機 やスマートフォンなどでスキャンした 名 刺 データを 弊 社 指 定 の 名 刺 管 理 ソフトを 利 用 して 文 字 認 識

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

d_cj01

IAF ID x:2010 International Accreditation Forum, Inc. Page 2 of 8 国 際 認 定 機 関 フォーラム(IAF)は 適 合 性 評 価 サービスを 提 供 する 機 関 の 認 定 のためのプログラ ムを 運 営 している この 認 定

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>

MakeShop5 階 層 化 & 集 商 品 が 登 録 しているカテゴリーを 確 認 することはできますか? 各 商 品 がどのカテゴリーに 登 録 されているかは 商 品 情 報 の 編 集 画 面 でご 確 認 いただけます 商 品 管 理 > 商 品 の 設 定 > 商 品 の 検 索 /

Web Web Web 2

Untitled

V-CUBEセミナー

■コンテンツ

Gmail 利用者ガイド

1. 目 次 1. 目 次 2.はじめに 2-1.メールテンプレート 編 集 機 能 とは? 2-2. 対 象 読 者 3. 用 語 一 覧 4. 利 用 の 流 れ 4-1.メールテンプレート 編 集 の 流 れ 5. 機 能 説 明 利 用 方 法 5-1.テキストメール 編 集 開 封 率 を

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

第1回

ご 注 意 (1) 本 書 の 内 容 の 一 部 又 は 全 部 を 無 断 で 転 載 することは 禁 止 されています (2) 本 書 の 内 容 は 将 来 予 告 無 しに 変 更 することがあります (3) 本 書 の 内 容 は 万 全 を 期 して 作 成 しておりますが ご 不 審

(Microsoft PowerPoint _RT\215u\217K\211\357)

複合検索機能マニュアル

Transcription:

Spring RooによるDDDの 実 践 ~ 第 2 回 Spring Rooのアーキテクチャ~ 2011 年 4 月 7 日 笠 原 規 男

Spring Rooのキーメカニズム ITD ApectJのITD(インタータイプ 宣 言 )を 利 用 クラスにメソッドや 属 性 をウィービング ユーザーコード(.java)と 自 動 生 成 コード(.aj)を 分 離.ajはユーザーは 編 集 不 可 Ruby/GroovyのMix-in C#のパーシャルクラスに 似 た 方 式 スカフォルディング Web 層 のモジュールを 自 動 生 成 RESTfullなController CRUD 機 能 を 備 えたJSPX 見 た 目 をカスタマイズ 可 能 (CSS アイコン 等 の 差 し 替 え) ラウンドトリップ 可 能 Entityへの 属 性 追 加 がJSPXに 反 映 される EntityへのFinderの 追 加 がControllerおよびJSPXに 反 映 される 2

Rooのアーキテクチャ 要 素 Web Webリソース(HTML/CSS/ 画 像 )など) JSPX TAGX JS Controller Entity Entity Embeddable enum 3

EntityとController FooBar FooBarController FooBar.java FooBarController.java FooBar_Roo_Entity.aj FooBarController_Roo_Controller.aj FooBar_Roo_JavaBean.aj FooBar_Roo_Finder.aj FooBar_Roo_toString.aj FooBar_Roo_Configurable.aj 4

スカフォルドの 処 理 フロー : list.jspx 1: updateform() 一 覧 表 示 一 件 選 択 更 新 の 流 れ HttpMethodFilter 2: 更 新 フォーム() 3: update() 6: merge() : update.jspx : Controller : Entity 4: エラー 表 示 () 5: update() 7: show() 8: 更 新 後 データの 表 示 () : show.jspx 5

RESTfulなリソースマッピング アプリケーション:clinic リソース:petに 対 するURL リソース GET PUT POST DELETE コレクションのURI http://hoge.com/clinic/pet/ 一 覧 取 得 未 使 用 新 しいリ ソースの 作 成 (ID 採 番 ) 未 使 用 メンバーのURI http://hoge.com/clinic/pet/5 一 件 取 得 (ID=5) リソース の 更 新 (ID=5) 未 使 用 リソースの 削 除 (ID=5) コレクションのURI+formパラメタ http://hoge.com/clinic/pet?form メンバーのURI+formパラメタ http://hoge.com/clinic/pet/5? form 入 力 用 フォーム の 取 得 更 新 用 フォーム の 取 得 未 使 用 未 使 用 未 使 用 未 使 用 未 使 用 未 使 用 HTMLではGET/POSTしか 使 用 できないが HttpMethodFilterが methodパラメータをもとにpost PUT/DELETE 変 換 を 行 う 6

コントローラの 呼 び 出 し JSPXへのフォワード list.jspxが 生 成 したHTML <a title="update Pet" alt="update Pet" href="/petclinic/pets/5?form"> PetController_Roo_Controller.aj @RequestMapping(value = "/{id}", params = "form", method = RequestMethod.GET) public String PetController.updateForm( } @PathVariable("id") Long id, Model uimodel) { uimodel.addattribute("pet", Pet.findPet(id)); return "pets/update"; WEB-INF/views/views.xml <definition extends="default" name="pets/update"> <put-attribute name="body" value="/web-inf/views/pets/update.jspx"/> </definition> 7

更 新 フォームの 表 示 1 WEB-INF/views/pets/update.jspx <div xmlns:field="urn:jsptagdir:/web-inf/tags/form/fields" xmlns:form="urn:jsptagdir:/web-inf/tags/form" xmlns:jsp="http://java.sun.com/jsp/page" version="2.0"> <form:update id="fu_com_springsource_petclinic_domain_pet" modelattribute="pet" path="/pets" versionfield="version" z="gxoakvqt12xvqcdpw3hqmnvadve="> <field:input field="name" id="c_com_springsource_petclinic_domain_pet_name" min="1" required="true" z="zy+k75jeso9rmejyzrfnivs2abg="/> <field:select field="owner" id="c_com_springsource_petclinic_domain_pet_owner" itemvalue="id" items="${owners}" path="/owners" z="fgzswap4xxvhphowjksrvve929c="/> <!-- fieldの 定 義 が 続 く... --> </form:update> </div> 8

更 新 フォームの 表 示 2 update.jspxによって 生 成 されたHTML <form id="pet" action="/petclinic/pets" method="post"> <input type="hidden" name="_method" value="put"/> <label for="_name_id">name :</label> <input id="_name_id" name="name" type="text" value="ポチ"/> <label for="_owner_id">owner :</label> <a href="/petclinic/owners?form"> <img title="create new Owner" src="/petclinic/resources/images/add.png"/> </a> <label for="_weight_id">weight :</label> <input id="_weight_id" name="weight" type="text" value="10.0"/> <!-- fieldの 定 義 が 続 く... --> <input value="save" type="submit" id="proceed"/> </form> 9

コントローラの 呼 び 出 し PetController_Roo_Controller.aj @RequestMapping(method = RequestMethod.PUT) public String PetController.update(@Valid Pet pet, BindingResult bindingresult, Model uimodel, HttpServletRequest httpservletrequest) { } if (bindingresult.haserrors()) { } uimodel.addattribute("pet", pet); return "pets/update"; uimodel.asmap().clear(); pet.merge(); return "redirect:/pets/" + encodeurlpathsegment(pet.getid().tostring(), httpservletrequest); 10

エンティティの 呼 び 出 し( 永 続 化 ) Pet_Roo_Entity.aj @Transactional public Pet Pet.merge() { if (this.entitymanager == null) this.entitymanager = entitymanager(); Pet merged = this.entitymanager.merge(this); this.entitymanager.flush(); return merged; } 11

トランザクションスクリプトからドメインモデルへ トランザクションスクリプト ビジネスロジックを 一 連 の 手 続 きで 構 築 して その 各 手 順 でプレゼン テーションからの1つの 要 求 を 処 理 する シンプルなアーキテクチャ J2EE 時 代 は Stateless Session Beans + JDBCによるDAO で 実 装 Spring 時 代 は POJO + HibernateによるDAO で 実 装 シンプルな 業 務 ロジックの 実 装 に 向 く ドメインモデル 振 る 舞 いとデータの 両 方 を 一 体 化 させたドメインのオブジェクトモデル アーキテクチャは 相 対 的 に 複 雑 になる ユーザーインターフェイスおよびデータ 永 続 化 処 理 の 分 離 アクティブレコードもしくはデータマッパーを 利 用 してO-Rマッピングを 行 う 複 雑 な 業 務 ロジックの 実 装 に 向 く 複 数 のUI(ブラウザ/ 携 帯 /リッチクライアント...)に 対 応 しやすい 12

トランザクションスクリプトとドメインモデルの 対 比 トランザクションスクリプト 機 能 追 加 の 労 力 ドメインモデル PofEAAより ドメインロジックの 複 雑 性 13

レイヤアーキテクチャ ドメインモデルパターンのレイヤ 構 成 DDD ユーザーインター フェイス 層 PofEAA プレゼンテーション 層 Spring Roo Web 層 アプリケーション 層 ドメイン 層 ドメイン 層 サービス 層 ドメインモデル エンティティ 層 インフラ ストラクチャ 層 データソース 層 UI 層 からドメインモデルを 直 接 呼 び 出 すのを 原 則 とし 必 要 な 業 務 だけサー ビスを 作 成 するのがファウラー 流 14

Rooのレイヤアーキテクチャの 課 題 サービス 層 の 分 離 が 必 要 サービス 層 が 分 離 されていないため プロセスフローを 分 離 できない エンティティのメソッドがトランザクション 境 界 UIの 変 更 をエンティティが 受 けやすい 画 面 に 表 示 すべきデータが 増 えたときに そのデータを 取 ってくる 処 理 をエン ティティに 追 加 する? データアクセスとドメインロジックが 混 在 DDDでのファクトリ リポジトリ 相 当 のロジックがエンティティに ドメインロジックの 実 装 方 法 が 示 されていない 生 成 されたエンティティにはCRUDしか 存 在 しない ビジネスロジック ビジネスルールの 実 装 方 法 は? どのクラスに 何 と 言 うメソッドで コントローラから 呼 び 出 す 方 法 は? トランザクション 制 御 は? 15