問題タブ [ddd-repositories]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
orm - 子エンティティクラスには独自のリポジトリが必要ですか?
クラスから継承するいくつかのクラスがありますAdmin
:Manager
、、Translator
など。
Admin
は集合体であるため、独自のリポジトリが必要です。ただし、マネージャーまたはトランスレーターを見つけるためのいくつかのメソッドは、これらのクラスに固有である可能性があります。その他は、すべての管理者に共通である可能性があります。
ここでのベストプラクティスは何ですか?するべきか:
- 管理者を見つけるためのすべてのメソッドを1つのリポジトリに配置しますか?
- または、リポジトリの階層を使用してドメインモデルクラスの階層を模倣
ManagerRepository
しTranslatorRepository
、AdminRepository
?
asp.net-mvc-3 - DTOはネストされたDTOを持つことができますか?
私は次のドメインモデルを持っています:
私のサービスには次のコードがあります。
私のサービスはデータベースからプレイリストと曲を取得し、プレイリスト内の曲ごとにクエリを実行して、その曲に固有のデータベースから追加の一致を取得します(SQL Server全文検索を使用)。
次に、データはDTOに変換され、結果オブジェクトに追加されて、コントローラーに戻されます。コードは次のようになります。
問題:
これまでのところ、PlaylistResultオブジェクトはうまく機能しましたが、最近の一致の導入により、状況は少し複雑になりました。一致を考慮してSongDTOを変更し、次のようにする以外に選択肢はないようです。
しかし、これはDTOの目的に違反しませんか?DTOはデータのフラット化された表現であり、このアプローチはフラット化されていないことを理解しています。一方、各試合は各曲に固有であるため、他にこれを行う方法がわかりません。
私はこれを自分で簡単にし、DTOを破棄し、ドメインモデルをコントローラーに直接渡して1日と呼ぶことができることを認識しています。しかし、全体の目的はDTOの操作方法を学ぶことなので、私はそれをしたくありません。
どんな入力でも大歓迎です。
architecture - リポジトリにアクセスするドメインエンティティ
これらの議論から続けて:
DDD-エンティティがリポジトリに直接アクセスできないというルール
ドメインがリポジトリにアクセスする方が良いと感じる状況がまだいくつかあります。この例を見てください。これは、レポート用の説明を含むデータベース内のTaskStatusテーブルが必要であることを前提としています。
CompletedTaskStatusオブジェクトとOpenTaskStatusオブジェクトを使用できることはわかっていますが、これが不要で、クラスの爆発的な増加につながる可能性がある状況があります。
そしてとにかく、この種のものではないのに、なぜリポジトリインターフェースがドメインに保存されているのですか?
architecture - DDD:アプリケーションサービスを呼び出すリポジトリ
これは、DDDに頭を悩ませている私の周りに基づいたシリーズの一部を形成します:)
前の質問に続きますが、背景知識は必要ありません。基盤となるデータベースに関係がある場合に、別のシステムからWCFサービスを消費するシステム
ドキュメントシステムとHRシステムがあります。HRシステムは、ドキュメントと、ドキュメントに関連するHR固有のデータを保存する必要があります。
私が最初に考えたのは、ドキュメントシステムへの呼び出しは、HRシステムのアプリケーションサービスで行う必要があるということでした(不要なコードは削除されました)。
リポジトリは次のようになります。
しかし、Jak Charltonはこの記事で、 「リポジトリの背後にあるものは何ですか?ほとんど何でも好きです。そうですね。正しく聞こえました。データベースを使用することも、さまざまなデータベースを使用することもできます。リレーショナルデータベースまたはオブジェクトデータベースを使用できます。 。メモリ内データベース、またはメモリ内アイテムのリストを含むシングルトンを持つことができます。RESTレイヤー、SOAサービスのセット、ファイルシステム、またはメモリ内キャッシュを持つことができます…」
だから今、私はサービスがこれだけであるべきだと思っています:
次のように、リポジトリ内のドキュメントライブラリサービスを呼び出します。
このように、間違いなく、担当者は依然として永続性にのみ責任があります。
私はここで正しい方向に進んでいますか、それとも離れていますか?
domain-driven-design - Aggregate 内のエンティティを更新する方法
キャンペーンという名前のルート エンティティを持つ Campaigns every という名前の集計があります。このルート エンティティには試行のリスト (エンティティ) があります。
キャンペーンの試行を追加するメソッドを使用しています
試行リストの特定の項目を編集しようとすると問題が発生します。AttempNumber で Attempt を取得し、それを editAttempt メソッドに渡しますが、リスト全体を削除せずに試行を設定して再作成する方法がわかりません
どんな助けでも大歓迎です!
ありがとう、ペドロ・デ・ラ・クルス
c# - Web アプリケーションの存続期間中にサービス レイヤーとリポジトリを 1 回インスタンス化する
Web アプリケーションの使用中に、すべてのサービスとリポジトリが呼び出されることを知っています。Web アプリケーションの起動時に一度インスタンス化し、インスタンス化された参照をコードで参照したいと考えています。
サービス/リポジトリを静的またはシングルトンにせずに、Web アプリケーションの有効期間中に 1 回だけインスタンス化するための一般的なパターンはありますか?
サービス/リポジトリをテスト容易性のために静的クラスまたはシングルトンにすることは避けたいのですが、ステートレスになるように設計されている場合、すべての Web リクエストでそれらをインスタンス化するのは適切ではないようで、アプリケーションの存続期間中にそれらがすべて必要になることがわかっています。
c#/asp.net を使用しています。
.net - ドメイン駆動設計 - 集計質問
簡単に言えば、私のドメインでは、ユーザーが、さまざまな状態と遷移、およびそれらの状態で許可される動作を含む (個人またはチームに関する) ストーリーを送信できます。
したがって、デザインのこの状態では、ユーザーは下書きを作成してストーリーを送信しています。私のドメインには、ストーリー、チーム、およびチーム メンバーが含まれています。
私の最初の質問は、完全な集計をロードする責任があるのは誰ですか? アプリケーション層は、当面のタスクに基づいてこれを指定する必要がありますか? すべてのデータをロードする必要があることを本当に知る必要があるのでしょうか? それとも、関連付けられたデータを常に熱心にロードするリポジトリに属するべきでしょうか? 遅延読み込みを使用することもできます (透明度は少し怖いかもしれません)。
次のタスクでは、ストーリーにコメントを追加できるようにし、ユーザーがストーリーを表示するたびにレコードを作成する必要があります。ストーリーがなければ意味がないので、これは集計に属しますか? これが私の混乱です。それらが集約に属している場合、コメントを追加するとき、または単に表示されたレコードを追加するときに、集約全体をロードする必要がありますか?
ご覧のとおり、私は DDD の初心者です。
ありがとう!
orm - エンティティはリポジトリにアクセスできますか?
User と Review という 2 つの単純なエンティティがあるとします。ユーザーが Review リポジトリを呼び出すと、どの程度問題になりますか? ユーザーがレビューを取得するための「クリーンな」方法は何ですか?
私はこの質問を見ましたが、これは悪い習慣だと彼らは言っていますが、そこには答えが見つかりませんでした。
model-view-controller - DDD/MVC:ビューからリポジトリにアクセスしないようにする方法は?
他のいくつかの質問を読んだ後、エンティティ クラスにリポジトリを使用させることはお勧めできないようです。したがって、これらのリポジトリを考えると:
クラスでこれを行うべきではありません:
しかし、ビューにレストランのリストを与えるこのコントローラーがあるとしましょう:
ビュースクリプトで各レストランのレビューを取得するための「良い習慣」は何ですか? したがって、私はこれを行うことはできません:
そして、ビューに ReviewRepository を挿入することも、「ベストプラクティス」とは言えないと思います...
どんなコメントでも大歓迎!
java - DDD-リポジトリと多対多の関係
私はDDDを初めて使用し、ここで立ち往生しています。ユーザーとグループの2つのエンティティ間に多対多の関係があります。ユーザーはグループなしで存在でき、グループはユーザーなしで存在できるため、関係は集約ではありません。
これは、Userクラスの私のコードです。
問題は、グループを含むユーザーを作成するときに、これらのクラスをどこに関連付けるかがわからないことです(ORMは使用できません)。Userのcreateメソッドで作成し、Springを通じてトランザクションを管理しています。これは正しいです?または、そのコードをuserRepositoryまたはServiceに配置する必要がありますか?
ありがとう!