考える場所

ココロとカラダ、思考する全部

ドメイン駆動設計

CQRSの小さな演習(last) CQRS

前回まではコマンド側のクラス構成を中心に見てきました。今回はクエリ側も含めてデータ取り扱い方を俯瞰して考えてみたいと思います。 クエリ クエリは画面表示上の都合のためにあります。クエリ側のオブジェクト(以降、DTO)とコマンド側のオブジェクト(…

CQRSの小さな演習(番外) バリューオブジェクト

たとえば、エンティティがIDをもっていて、これをどうやって表現するかを考えてみます。MySQLでauto incrementの数値だからintかな?とか、UUIDだからStringかな?とかって考えますよね。だけど、その前に、エンティティにとってはそれが数値であっても文字…

CQRSの小さな演習(5) リポジトリ

MySQLを使っていてもPostgreSQLを使っていても、JNDIでデータソース(JDBC)を取得することによって、ベンダー依存しないデータベースアクセスをすることができます。リポジトリはこれをもっと抽象化して、エンティティ(集約)を取得するインタフェースを考…

CQRSの小さな演習(4) エンティティとファクトリ

前回、ドメインにおけるイベントとコマンドについて考えてみました。今回はコマンドをどのようにイベントに繋げていくかを見ていくことにします。 エンティティ(集約) 分かりやすいところでイベントFixedとDidの発生から考えます。 これらのイベントはエン…

CQRSの小さな演習(3) ドメインイベント

データ更新を伴う業務の出来事に関する処理と、レポートするための画面表示に関する処理を同じに書こうとすればそのアプリケーションを複雑にしてしまいます。複雑であるとは、ふたつ以上の関心事が同じ所にあるということです。Webアプリケーションではリク…

CQRSの小さな演習(2) 設計の枠組み

「ドメインモデル貧血症」や「利口なUI」と言われるアンチパターンがあるのは、そのパターンをやってしまいがちだからだと思います。そうでなければわざわざアンチパターンとして識別するような名前をもたなかったでしょう。データベースから取得したなんと…

CQRSの小さな演習(1) 現実の問題

仕事で業務向けのWebアプリケーション開発をしています。その中でもいろいろな問題がやはりあるのですが、特に大きな問題だなと思えることがあります。エンハンスや保守改修が続くと、もうなにがなんだったか分からなくなってしまうことです。私はもう20代で…

ユビキタス言語

この言語はチームで行う作業のいたるところに(ユビキタスに)存在できるものだ。 - エリック・エヴァンス ユビキタス言語は単に共通言語と言ってしまってはいけないものなのだろう。ドメインエキスパートと開発者が会話するときにはこの言語を使いましょう…

モデルは進化する

モデルは、決して完成することがない。代わりに、進化していくのだ。 - エリック・エヴァンス 旧来のウォータフォールモデルでは知識は一方通行に流れる。アナリストがドメインエキスパートの知識を分析する。設計者が知識の分析をモデリングする。開発者が…

モデリング

ドメインモデリングとは、モデルをできるだけ「写実的に」作成することではない。 - エリック・エヴァンス モデリングとは関心事を表現することであって、現実世界をそのまま表現することではない。現実世界を技術的な手法で機械的にモデルに落とすことはで…

DDDにおけるオブジェクトの関連

単方向にする DDD には一方向の関係性が適しています。Eric Evans は、「可能な限り関係性を制限することが重要です」、そして「ドメインを理解することで自然な方向性が明らかになります」と助言しています。 - ドメイン駆動設計のコーディング: データを重…

ドメインモデル貧血症

If you have an anemic domain, the repository will be just a DAO. - SapiensWorks | Repository vs DAO RepositoryとDAOの違いが分かりづらいのは当然だ。RepositoryとDAOは同じだったのだ。貧血症のドメインにおいてRepositoryは単にDAOだという。 These…

Repositoryのプラクティス

A method like Update is appropriate on a DAO, but not a Repository - hibernate - What is the difference between DAO and Repository patterns - Stack Overflow Repositoryはcollection of objectsの抽象である。従ってUpdate(Entity)をしない。Repos…

RepositoryとDAO

ご指定のページは次のページへ移動しました。 http://blog.fukuchiharuki.me/posts/2017/03/28/difference-between-repository-and-dao.html お手数ですが、ブックマーク等の修正をお願い致します。