PofEAA
重要なことは、アクティブレコードのオブジェクトは、データベースアクセスをカプセル化していることです。オブジェクトがデータアクセスの機能を提供していると言い換えてもいいでしょう。 アクティブレコードパターンの本当の意味 - yvsu pron. yas これが…
[データマッパーによるドメインモデル] ┏━━━━━━━━┓ ┃User Interface ┃──────┐ ┗━━━━━━━━┛ | ↓ | ┏━━━━━━━━┓ | ┃Application ┃──────| ┗━━━━━━━━┛ | ↓ ↓ ┏━━━━━━━━┓ ┏━━━━━━━┓ ┃Infrastructure ┃─→┃Domain Model ┃ ┗━━━━━━━━┛ ┗━━━━━━━┛ Domain Model は…
「アクティブレコードによるドメインモデル」と「データマッパーによるドメインモデル」の 2 つに大別されるけれど、このまんまの呼び方だとなんというか人に説明する時にちょっと不便。 ということで「ラッピングによるドメインモデル」と「マッピングによ…
この記事 を読んだ限りでは、あまり期待できなさそうだ。 以下抜粋。 エンティティに対してデータの側面を意識しすぎている点が、エンティティアーキテクチャのデグレードにつながる。 レイジーロードがないために余分なコードが必要になる。 共有された、標…
書籍「ドメイン駆動」のリポジトリの作りがどうも気に入らない。 こんな風*1にするのはどうだろう。 public abstruct class Repository { public UserRepository OfUser { get { return this.CreateUserRepository(); } } protected abstruct UserRepository…
書籍「ドメイン駆動」 (この本買って正解だった。PofEAA の次に読むべき本。) で、ドメインオブジェクトの PI (Persistence Ignorance : 永続記憶に左右されない) を高水準で実現できる O/R マッパーとして紹介されていたので触り始めてみた。O/R マッパーに…
データマッパーによるドメインモデルの目的は、ビジネスロジックとデータストアを切り離すことだから 僕のやろうとしていることは間違っているのかもしれない
ドメインレイヤーとデータストア - 気楽に諸々の続きつーか、そもそも貸出メソッドがセパレートインターフェイスを使ってデータマッパーに DB 更新を行わせているんだった。 この時点で、ドメインレイヤーがデータストアの存在を意識しているじゃないか。 こ…
データマッパーによるドメインモデルにおいて、ドメインレイヤーは「データストア」を意識しなくて良い。SQL だの テーブル構成だの、そんなの気にしなくていい。 でも、「データストアの存在」までも意識しなくて良いのか? というのも、同時実行制御を行う…
やっぱし良くないか? - 気楽に諸々の続きドメインオブジェクトからセパレートインターフェイスを呼び出したりすれば、いいんじゃん。あるいは、イベントを利用するのも手か。 たとえば書籍クラスと(図書館の)受付係クラス、利用者クラスがあったとする。受…
会社で購入してもらった。 そんで社内で二人に勧めた。 一人はオブジェクト指向愛好家な先輩。 もう一人はオブジェクト指向に興味を持っているっぽい新人。こちらにはアジャイルソフトウェア開発の奥義も勧めてある。 しまったな、二人に勧めたけど一冊しか…
ドメインレイヤーに配置してはいるが、ドメインオブジェクトがコレを使用しているわけではないんだよな。 でもまぁ、可視性の関係でドメインレイヤーに配置しないとだし。 あと、セパレートインターフェイスを抽象クラスにしたから、データマッパー側で基本…
途中何度か苦戦したけど、なんか行けそうな感じだ。 データマッパーはリフレクション+依存性の注入を使うことで、プレゼンテーションレイヤーからも完全に分離できるし。 問題は、設計の難易度が高いことか。 うっかり、一意マッピングへの追加処理を忘れた…
実際にミニマムなモンを作り始めた。 ユニットオブワークや一意マッピングより先に、データマッパーの作りでお悩み中。 ドメインオブジェクトのセッターやなんかは internal にしてみるテスト。 抽象クラスによるセパレートインターフェイスを、プレゼンテー…
苦戦中。 デシリアライズ後、親の DataRow や子の DataRow が取れなくなってしまっても別に支障はないかな??
一意マッピングで DataRow とドメインオブジェクトをペアにして保持するとして、シリアライズのこと (DataRow を直接シリアライズできないこと )考えると、一筋縄じゃ行かないじゃないか。 さて、どうするか。
データマッパーを用いたドメインモデルにおいて、一意マッピングを使用する場合。 データアクセスレイヤーでデータセットを使うなら、データセットはユニットオブワークの役目を持つから、データセット(というよりDataRow)とドメインクラスをペアにして一意…
次やるプロジェクトではテーブルモジュールにしようと思っている。 トランザクションスクリプトでもいいけど。 或いは、アクティブレコードによるドメインモデル。 データマッパーによるドメインモデルはほぼ無い。
Find メソッドだけではなく、Insert・Update・Delete もドメインレイヤーのセパレートインターフェイスに含めるべきな気がする。 (つーかそれが普通?) 例えば書籍を削除する時、書籍を格納している棚から、参照を削除する必要があるけど、これはドメインレ…