WR blog

about Enterprise IT, Oracle Database, Jazz/Fusion Music, etc…

WR blog RSS Feed
 
 
 
 

Archive for ObjectModeling

PoEAAとか

ロイホにしけこみ読書。

Essential XML・・・うーむどうなんだろう。ちょっと必要以上にわかりにくく書いてないか?この本。 訳が良くないというのもあるけど・・・(シリアライズを「順序化」って、あーた・・・。せめて「直列化」で頼む。) インフォセットの語りもなんだか抽象的でよーわからんし、SAX、DOMのあたりも構成が練れていない感じ。

PoEAA読書会に向けて、2部のパターン、O-Rマッピングあたりをさらりと読む。

1部の概論はイマイチしっくり来なかったが、2部はまぁまぁな気がする。 各パターンの説明の中で、未説明のパターンに言及するあたりがなんだかなーだけど、 各パターンの概要が頭に入ってきてパターン間の関係を頭の中で整理することができると、 比較的すんなり読めた。 ただ、ファウラーのコメントが散文的で踏み込みが甘いので、若干フラストレーションがたまるなぁ。 もう少し、具体的なコメントがほしいところではある。 現在は様々なフレームワークが出回っているわけだから、それらに触れるような切り口もありなのでは?と思ったりした。

EOFとPoEAA

パターンの本来的な役割は、共通の語彙・概念の形成であると理解している。 というわけで、PoEAAの語彙・概念を利用してEOFを表現する。(乱文すぎるので、たぶん、あとで書き直す)

ドメインロジックパターン

ドメインロジック(=ビジネスロジック) の割り当ての方針は、基本的に「ドメインモデルパターン」が推奨される。 もちろん、画面にビジネスロジックを埋め込むような実装・設計も可能ではあるけれども。

物理的にも、「ドメインモデル」を実装したオブジェクト群をパッケージ化・フレームワーク化して、様々なアプリケーション形態(WOFと呼ばれるリッチなWebアプリケーションフレームワークを使用したWebアプリケーション、DirectToWebと呼ばれるルールベースのUI定義ベースのWebアプリケーション、Javaクライアントなどなど)で、それらを共用することが(それなりに)一般的であるようだ。

データソースのアーキテクチャに関するパターン

データソースとオブジェクトの変換は、オブジェクトグラフとリレーショナルモデルの変換という形で実行される。 であるので、「データマッパーパターン」になるのかな? オブジェクトとリレーショナルの対応は、物理的には*.eomodelファイル群、論理的にはEOModelGroup、EOModelなどのメタモデルクラス群で管理される。(「メタデータマッピングパターン」に相当)

オブジェクトリレーショナル振る舞いパターン

基本的に、「ユニット・オブ・ワーク パターン」。 EOEditingContextと呼ばれる、オブジェクトグラフの編集用ブール、SandBox的なオブジェクトが存在しており、これがオブジェクトグラフの編集状態を管理する。編集をコミットしたタイミングで、オブジェクトの編集処理が、SQLクエリに変換される(「データ・マッパー パターン」)。この際、デフォルトでオプティミスティックロック戦略が使用される・・・ことになっている。(苦笑&謎めき)

EOEditingContextの寿命とWeb層のSessionの寿命がシンクしている点がなかなかいい感じではある。 (超私見)

一意マッピング

異なる2つの世界、RDBMSとオブジェクトの中で、一意性をどのように、どのレベルで確保するか?という戦略。

EOFは一意性に関しては、2種類の一意性管理をもつ。 「ユニット・オブ・ワーク」単位の一意性と、データベース群レベルの一意性であり、EOGlobalIDなるクラスを用いることで一意性管理を実行する。EOGlobalIDは「データソース×テーブル×プライマリキーの組み合わせ」と考えてよい。文字通り、複数データソース内で、グローバルに一意である。

1つの編集用領域(EOEditingContext)には、同じEOGlobalIDのオブジェクトは1つしか読み込まれない。 ただし、複数ユーザーが編集中である場合など、複数の編集用領域が存在する場合、同じEOGlobaIDのオブジェクトが複数存在する。(当たり前!) ただし、下位のデータ管理レイヤがそれぞれのオブジェクトをトラッキングしており、あるオブジェクトが編集された場合、同じEOGlobalIDを持つ別のオブジェクトに変更を伝播させたり、しなかったりする。

レイジーロード

レイジーロードはfaultingと呼ばれる機構でサポートされる。 関連の先にぶら下がっているオブジェクトは、必要に応じてRDBMSから読み込まれる。 (キャッシュと絡むと何がなんだか・・・ということになりそうな気もしないでもない。)

構造パターン

一意フィールド

基本的にPKはoid的扱いが基本。オブジェクトのライフサイクルでPKの値を変更することは想定外!(だったと思う)

外部キーマッピング

外部キーというか、RDBのリレーションシップは、デフォルトでは(オブジェクトグラフにおける)双方向の参照の持ち合いに変換される。toOneは単なる参照に、toManyはコレクションに格納された参照になる。

アプリケーションは(基本的に)上記の仕組みを理解する必要が無い。参照の管理のみをキチンとやればよい。 (「データ・マッパー」の枠組みの中で自動的に行われる)

関連テーブル・マッピング

忘れた・・・

依存マッピング

「依存」という概念は無かったはず。

組込バリュー

メタデータの枠組みの中で、カラム→オブジェクト、オブジェクト→カラムのマッピング戦略を定義可能。 ファクトリメソッドと、シリアライズメソッドを定義しておけばよい(←用語は怪しい)

シリアライズLOB

上記と同様の考えて実現可能(な、はず・・・)

各種継承

用語は違うが、3つの継承をサポートする。 EOFの世界では、

垂直マッピング継承 水平マッピング継承 シングルテーブル継承

と呼ぶ。(つーか、こちらの用語の方が一般的?)

関連資料

自作のWOMeeting - WOWiki用の資料なぞ。

EOModeling Techniques from Practical WebObjects Managing the Object Graph from Practical WebObjects WebObejects/EOFでの継承モデリング

とか。

共通の語彙としてのパターン

うん、確かに便利かもねー。

会議の帰りにアナパタ談義

会議の帰りに、ふとファウラーの話になり、そして、アナパタの話になった。

同僚曰く、「ファウラーは、基本的に一番まともなことを言っているように思える。だから結構スキ。が、アナパタよくわからん。理解できん。難しすぎる」 とのこと。

確かにアナパタは難しい。自分もかなり難しく感じた。 苦労して何度も読んだ結果、ぼんやりと理解はできた。 が、今思うと、カナリ無駄な時間を費やしたような気がする。

話の中で、アナパタ難しい理由として以下の2つをあげた。

表記法としてオブジェクトモデルを利用しているが、実概念(意味)とモデル要素の関係のとり方が一般的なオブジェクト指向と異なるため、理解が難しい。 オブジェクトモデルはモデル要素の意味が曖昧であるため(特に関連)、読み取った結果、読み手がイメージする意味が、各人でブレ易い。

個人的には、アナパタという本は、とんだ食わせ物だと思っている。 アレは、オブジェクトモデルの乱用である。オブジェクトモデルの適用領域を超えてオブジェクトモデルの表記方法を利用しているため、普通の人間には理解しがたい。

アナパタが表現したいモデル構造を理解するためなら、Data Model Resouce Bookを見る方が良い。おそらく、こちらの方がわかりやすい。

これは何故だろうか?自分でもよくわからない。

リレーショナルモデルのリレーションシップの意味の明確さが理解をたすけるのだろうか? それとも、オブジェクトモデルにおけるインスタンスであるレコードなる概念が、非常にわかりやすいものであるため、理解がしやすいのだろうか。

ま、いずれにせよ、アナパタを理解したい人には、Data Model Resouce Bookをお勧めしたい。

リレーショナルモデルにおける正規化の延長上に多階のモデルがあるという、新しいものの見方を学べるというおまけもついてくる。

内容的にはすばらしい(といっても全部は読んでいないのだけど・・・)のだけど、腹立たしい点が一点ある。 CD-ROMが添付しており、データモデルのDDLがはいっているとうたっているにもかかわらず・・・・、別途$350払わないと読めない・・・。どーなの?これ?

Profile

Jazz/Fusion Musicを愛するIT技術者です。 現在、Oracle Database 関連の仕事をしています。

保有資格

  • Oracle Master 10g Platinum
  • Oracle Master 11g Gold
  • Oracle Master Expert 10g RAC
  • Oracle Master Expert Oracle on Linux
  • LPIC level2
  • 日商簿記3級

連絡先

ご連絡は、wrcsus4 _at_ gmail _dot_ com にお願いいたします。

 

July 2010
M T W T F S S
« Sep    
 1234
567891011
12131415161718
19202122232425
262728293031  

Recent Posts

Recent Comments

Tags

Categories

Pages

Archives

Meta