タグ付けされた質問 「entity」

13
OOPのオブジェクトはエンティティを表す必要がありますか?
オブジェクトはエンティティを表す必要がありますか? エンティティ私のような何かを意味Product、Motor、ParkingLotなど、物理的、あるいは明確な非物理的な概念オブジェクト-だけでなく、いくつかのコアデータは明らかにオブジェクトに属していると、定義されているもの、およびいくつかの関数/メソッドコアデータを明確に操作します。 たとえば、aのオブジェクトDemon、それ自体のエンティティ、想像上のオブジェクト、おそらく物理的ではなくエンティティを持つことができます オブジェクトは、メソッドのコレクション、共通の目標に結び付く共通のプロシージャセットになりますか? 例:クラスを呼び出すことができるMotorOperationsか、MotorActionsそこには実体ではありませんが、クラス内のメソッドは次のようなことを行う場合には、 getMotorDataFromHTMLForm() getMotorManufacturers() selectMotorFromUserRequirements($ requirements) canMotorCanHandleOperatingConditions($ conditions) computePowerConsumptionForMotor($ id) クラスは通常、オブジェクトの中心となるデータ+データの操作として定義されます。そのため、Motorモーターの仕様に関連するいくつかのモーター変数があり、それらのデータを組み合わせて何かを生成する操作があります。 私の場合、データを操作するクラスとクラスを通過するデータを持っているようなもので、一時的なクラススルーデータ以外に「モーター操作」を中心としたデータはありません。 質問 クラスはエンティティのないオブジェクトを表すことができますか?そうでない場合、なぜそれらは悪い/不完全/非OOP中心ですか?OOPに合わせて概念的に変更/改善する必要がある方法はありますか?

1
エンティティの代わりにDTOを使用するとどうなりますか?
私はRCPアプリケーションに取り組んでいます。このアプリケーションは初めてです。 Spring Beanは、エンティティを保存/取得するビジネスロジックを記述するために使用されます。 ただし、エンティティを直接クライアントに送信する代わりに、DTOに変換してクライアントにデータを入力しています。保存中に、再びDTOをエンティティに変換して保存します。 これらの変換の利点は何ですか?誰か説明できますか?
18 java  spring  entity  map  dto 

2
エンティティからDTOへの使用
基本的な階層型Webアプリケーションのフローを考え出そうとしており、競合する情報をオンラインで読んでいます。私が理解しようとしているのは、何らかのマッパーを使用して、DAOからサービスレイヤーへのDTOオブジェクトを引き続き使用する利点があるかどうかです。 私が予見する基本的な流れは次のとおりです。 UIモデル/フォーム->コントローラー コントローラーはモデルをドメインオブジェクト(エンティティ)に変換します ドメインオブジェクト->サービスレイヤー ドメインオブジェクト-> DAO DAO->ドメインオブジェクト サービス-> UI UIはドメインをUIモデルに変換します DTOに従った場合、DAOはエンティティではなくDTOを返します。(少なくともJavaでは)エンティティがアノテーション付きのPOJOになったため、DTOがわずかに機能しなくなったようです。つまり、メモリフットプリントが非常に小さくなっています。 これは事実ですか、それともDTOを使用してドメインオブジェクトをDAOレイヤー内に完全にカプセル化する必要がありますか?また、この場合、サービスレイヤーはDAOに何を渡しますか? 本当にありがとう!
15 java  entity  jpa 

4
ドメインからリポジトリにアクセスする
タスクログシステムがあるとします。タスクがログに記録されると、ユーザーはカテゴリを指定し、タスクはデフォルトで「未処理」のステータスになります。このインスタンスでは、CategoryとStatusをエンティティとして実装する必要があると想定しています。通常、私はこれをします: アプリケーション層: public class TaskService { //... public void Add(Guid categoryId, string description) { var category = _categoryRepository.GetById(categoryId); var status = _statusRepository.GetById(Constants.Status.OutstandingId); var task = Task.Create(category, status, description); _taskRepository.Save(task); } } エンティティ: public class Task { //... public static void Create(Category category, Status status, string description) { return new Task …

4
データベースをモデル化するときに弱いエンティティを使用する必要があるのはいつですか?
これは基本的に、弱いエンティティとは何かに関する質問ですか?それらをいつ使用する必要がありますか?どのようにモデル化する必要がありますか? 通常のエンティティと弱いエンティティの主な違いは何ですか?ドメイン駆動設計を行う場合、脆弱なエンティティは値オブジェクトに対応しますか? ここでトピックに関する質問を続けるのを助けるために、人々がこれらの質問に答えるために使用できるウィキペディアから取られた例です: この例でOrderItemは、弱いエンティティとしてモデル化されましたが、通常のエンティティとしてモデル化できない理由を理解できません。 もう1つの質問は、注文履歴(つまり、ステータスの変更)を追跡したい場合、それは通常のエンティティまたは脆弱なエンティティでしょうか?

2
集計境界を設計する方法は?
eコマースのようなアプリケーションを書きたいのですが。 また、類似のアプリケーションでは、製品のプロパティと機能が異なる場合があります。このような機会をシミュレートするために、次のドメインモデルエンティティを作成しました。 カテゴリ -これは「エレクトロニクス>コンピューター」のようなもの、つまり製品のタイプです。Сategoriesには、プロパティのリストが含まれています(List <Property>)。 プロパティ -名前、測定単位、データ型を含む独立したエンティティ。たとえば、「名前」、「重量」、「画面サイズ」。同じプロパティに異なる製品を含めることができます。 製品 -プロパティに関連する名前と値のリストのみが含まれます。Valueは、プロパティの値フィールドとフィールドIDのみを含むオブジェクトです。 たとえば、新しい製品を追加するときに、現在のカテゴリに関連するプロパティ(category.AddNewProduct(product))を含む現在のカテゴリに関連するすべてのデータを知る必要があるため、このスキームでカテゴリを単一の集計のようにすることを最初に決定しました。しかし、どのカテゴリにも属さない新しいプロパティを追加する必要がある場合はどうすればよいですか。たとえば、特定のカテゴリにプロパティを追加することを明確に示しているため、このcategory.AddNewProperty(property)は実行できません。 次のステップでは、個別のプロパティを個別の集計に決定しましたが、それは単純なエンティティのリストになります。 もちろん、PropertyAggregateのようなものを作成して、プロパティとビジネスルールの内部リストを保持できますが、製品を追加するときは、不変条件を確認するために、このカテゴリに属する​​プロパティのリスト全体をカテゴリ内に含める必要があります。しかし、アグリゲート内のリンクを他のアグリゲートで維持することは悪い習慣であることも知っています。 このビジネスケースを設計するためのオプションは何ですか?

2
CQRSで新しい集約ルートを作成するにはどうすればよいですか?
cqrsアーキテクチャで新しい集約ルートを作成するにはどうすればよいですか?この例では、最初の1つのAR1への参照を保持する新しい集約ルートAR2を作成します。 開始点としてAR1メソッドを使用してAR2を作成しています。これまでのところ、いくつかのオプションが表示されます。 AR1の内部メソッドでは、リポジトリにアクセスできるドメインサービスを使用して、このオブジェクトをcreateAr2RootOpt1呼び出しnew AR2()てdb imediatellyに保存できます。 最初の集約ルートなどでイベントを発行できます。SholdCreateAR2Eventこれに反応してコマンドCreateAR2Commandを発行するステートレスサガがあり、それが処理されて実際にAR2が作成されて放出されAR2CreatedEventます。イベントソースを使用する場合、SholdCreateAR2Event最初の集約ルートの状態には影響しないため、イベントストアに保持されません。(または、これをイベントストアに保存する必要がありますか?) class AR1{ Integer id; DomainService ds; //OPTION 1 void createAr2RootOpt1(){ AR2 ar2 = new AR2(); ds.saveToRepo(ar2); } //OPTION 2 void createAr2RootOpt2(){ publishEvent(new SholdCreateAR2Event()); //we don't need this event. Shoud it still be preserved in event store? } } class AR2{ Integer id; Integer ar1Id; …

3
エンティティフレームワークエンティティ-Webサービスからのデータ-最高のアーキテクチャ?
現在、いくつかのWebアプリケーションでEntity FrameworkをORMとして使用しています。これまで、すべてのデータが単一のデータベースに格納されているため、これが適しています。リポジトリパターンを使用しており、これらを使用するサービス(ドメインレイヤー)があり、EFエンティティをASP.NET MVCコントローラーに直接返します。 しかし、データベース内のユーザーに関連する追加情報を提供するサードパーティのAPI(Webサービスを介して)を利用する必要が出てきました。ローカルユーザーデータベースに、追加情報を取得するためにAPIに提供できる外部IDを保存します。利用できる情報はかなりありますが、簡単にするために、そのうちの1つはユーザーの会社(名前、マネージャー、部屋、役職、場所など)に関連しています。この情報は、単一の場所で使用されるのではなく、Webアプリ全体のさまざまな場所で使用されます。 だから私の質問は、この情報を入力してアクセスするのに最適な場所はどこですか?さまざまな場所で使用されているため、Webアプリケーションで使用する場合は常にアドホックベースでフェッチすることはあまり意味がありません。そのため、この追加のデータをドメインレイヤーから返すことは理にかなっています。 私の最初の考えは、EFエンティティ(EFUser)を含むラッパーモデルクラス、および新しい情報を含む新しい 'ApiUser'クラスを作成することでした-ユーザーを取得すると、EFUserを取得し、追加のAPIからの情報、およびApiUserオブジェクトを設定します。ただし、これは単一のユーザーを取得する場合は問題ありませんが、複数のユーザーを取得する場合は失敗します。ユーザーのリストを取得するときにAPIをヒットすることはできません。 私の2番目の考えは、ApiUserを返すEFUserエンティティにシングルトンメソッドを追加し、必要なときにそれを設定することでした。必要なときだけアクセスするので、これは上記の問題を解決します。 または、最後の考えは、データベースにデータのローカルコピーを保持し、ユーザーがログインしたときにAPIと同期することでした。これは単なる同期プロセスであるため、最小限の作業であり、ヒットのオーバーヘッドはありません。ユーザー情報を取得するたびにDBとAPIを使用します。ただし、これらはデータを2か所に保存することを意味し、しばらくログインしていないユーザーのデータが古くなっていることも意味します。 このようなシナリオを処理するための最善の方法についてアドバイスや提案はありますか?

2
リポジトリパターンとDAO管理エンティティ
DAO、DAL、ドメイン駆動設計などのコンセプトは初めてです。最後に、パーシスタンスレイヤー(mysqlデータベース)を、Webアプリケーションのビジネスオブジェクトおよびロジックから切り離したいと考えています。DAOのコンセプトは気に入りましたが、他のエンティティが関連付けられているデータベースからビジネスオブジェクトを作成しようとすると、DAOの実装に行き詰まりました(dbテーブルの外部キーで表されます)。 これらの参照(集計)はDAOパターンを使用してどのように処理されますか?すべてのオンラインDAOの例は単純で、(他のエンティティや値オブジェクトを参照せずに)値オブジェクトのようなビジネスオブジェクトのみの作成を示しています。依存性注入を使用して行われますか?そうであれば、依存関係はどこに作成されますか? さらに読むことで、DDDからのリポジトリパターンは、バックグラウンドでDAOを使用し、オブジェクトの集約を処理する可能性を与えると思います。私が理解しているように、それはいわゆるルート(すべての参照がロードされたエンティティまたはレイジーロードされたエンティティ)を外界に提供するだけです。DAOの使用時にリポジトリは推奨されますか、それともDAO自体がビジネスオブジェクトに対する永続性の無知を維持することによってこの機能を提供できますか? 私はORMツールを使用しておらず、これらの基本的なパターンを直接探求したくはありません。
10 repository  entity  dao 

2
エンティティの既知のビジネスIDは、DDD / OOPの専用タイプで表す必要がありますか?
実際には、カスタムタイプ(不変)classをstring他のプリミティブ型の上で使用することを意味します。 例: 出版:国際標準図書番号。 金融:国際証券識別番号。 利点: 識別子の形式を確認できます。 モデルのファーストクラスのメンバーになります。 短所: 永続化の摩擦を追加します(例:Entity Framework)。 より多くのコード。

1
一意の値オブジェクトとエンティティ
一部のエンティティを値オブジェクトに変換しようとすると、値オブジェクトが集約内で一意でなければならない場合に行き詰まります。 集約のルートを作成するMovieエンティティがあるとします。このMovieエンティティは、特定のタイムスタンプで広告を表示する役割を持ついくつかのAdvertisementEventオブジェクトのセットに関連付けられています。 AdvertisementEventはいくつかへのリンクが含まバナーが表示されている必要があり、座標といくつかの効果フィルタを。 以来AdvertisementEventだけで設定パラメータのコレクションを、私はそのアイデンティティを気にしてばかり大きな値オブジェクトのように扱う必要がある場合、私はわかりません。ただし、映画内では、特定のタイムスタンプで、おそらくタイムスタンプの前後でも、AdvertisementEventが1つだけであることを気にします。 私は疑問を複数の独立した質問に分割するのが難しいので、そこに行きます: ない設定パラメータのコレクションは、値オブジェクトのように聞こえますか? 映画内のAdvertisementEventの一意性の概念とトランザクション整合性ルールを混在させていますか? ない任意の時点での選択肢(2)のがあることを意味AdvertisementEventがで作られた集合体のメンバーでなければなりません作品? 私のあるAdvertisementEventのオブジェクトは、エンティティ、値オブジェクトやイベントオブジェクト?(私の混乱を強調するために、名前にイベントサフィックスを使用しました) このような大きな値のオブジェクトはデザインのにおいですか? 私はそれだけで何かではないので、私はDDDの意味でのイベントはお取り扱い致しておりませんことを推測起こります。実際のDDDイベントは、AdvertisementEventReachedのようなものでなければなりません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.