問題タブ [domain-model]
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.
java - JPA / Hibernate:サブタイピングと戦略の「パターン」
以下は、JPA注釈付きの型階層であり、すべてのデータフィールド(および関連するゲッターとセッター)は、ビジネスロジックを実装するための抽象的なメソッドとともにスーパータイプのメンバーです。データメンバーを追加せずにこれらの抽象メソッドを実装するサブタイプはいくつもあります。したがって、単一テーブル継承戦略を使用して、このタイプ階層をバックアップするためにデータベース内の1つのテーブルのみが必要になります。
データの内容に基づいて、最終的な目標を達成するために実装する必要のあるさまざまな動作があるため、このようにしました。
これは、JPA / Hibernateのディスクリミネーター列の概念の転覆ですか?
同僚は、データの構造はサブタイプごとに変化しないため、抽象メソッドと対応する実装を戦略パターンアプローチのようなものに移行する必要があると主張しています。彼の考えは良いですか?
model - 「動的に」参照できるドメイン モデル図を作成するためのツール
プロジェクトのドメイン モデル/高レベル コンセプト モデルを作成して維持したいと考えています。現在、jDeveloper を使用して UML クラス図を作成しています。これではうまくいきません。より良い代替手段を見つけたいと思います。
問題は、オブジェクトの数が十分に大きくなると、ダイアグラムに非常に多くの関係が含まれるため、読み取りと保守がほとんど不可能になることです。この図は、互いに交差する線の大きなクモの巣です。
UML モデリング ツールとマインド マッピング ツールのハイブリッドは、このニーズに最適だと思います。
- 高レベルの概念化と顧客とのコミュニケーションが必要です。図は完全な UML である必要はありません
- 私が試したいくつかのマインド マッピング ツールは、ノード間の接続しかありません。それだけでは不十分です。関係の多重度情報 (0...*) と、ノードのフィールドを定義する機能が少なくとも必要です。
- UML クラス図は、さまざまな線のスタイル (斜め/直線) を使用し、関連するクラスが隣り合うようにクラスをレイアウトすることで、もう少し読みやすくすることができます。私は両方を試しましたが、ある程度しか役に立たず、ダイアグラムが十分に複雑になると、ダイアグラムが読めなくなるのを避けるためにできることは何もありません. ここで「動的」部分の出番です。クラスをグラフのノードとして持つツールを使用できます。1 つのクラスを選択すると、そのクラスが中央に表示され、それに関連するすべてのクラスがその周りに表示されます。そうすれば、クラス ダイアグラム/マインド マップをインタラクティブに閲覧し、一度に 1 つのクラスに集中することができます。
grails - Grails/Gorm:1対1のオプションの関係を作成します
ユーザー間の投稿/ディスカッションをチケットにアップグレードできるシステムを設計しています。ある特定の場所で、1 対 1 の任意の関係を作成しようとしていますが、特定の問題が発生しています。脚光を浴びているエンティティの要約版を以下に示します。
ルール:
- 必要に応じて、投稿をチケットにすることができます。(オプション)
- チケットには投稿が必要です。(必須)
Post.groovy
Ticket.groovy
これはある程度機能します。できます:
- チケットがアップグレードされた場合、チケット属性nullを残す投稿を作成します。
- 親チケットを指すように、Post のチケット属性を明示的に設定できます。
ただし、このマッピングはドメイン レベルでは適用されません。Ticket1 が Post1 を指しているが、Post1 が Ticket2 を指しているという状況の余地があります。
Ticketstatic hasOne = [post: Post]
クラスで aを使用しようとしましたが、Postクラスに a が存在することが必須であり、これが必須の 1 対 1 の関係になることを後で知りました。これは私が探しているものではありません。static belongsTo = [ticket: Ticket]
このシナリオでこの 1 対 1 のオプションのマッピングを実現する方法はありますか? どんなポインタでも最も役に立ちます。
database - カーサービスデータベースの設計(ドメインモデル)?
まず第一に、私はおそらく私が作るべき車、モデル、製造...テーブルがないことを知っていますが、それは今のところ問題ではありません。
私はすでにデータベースを作成しており、リレーショナルモデルは次のようになっていると言わなければなりません(重要なことに集中するために簡略化しました)が、これの概念(ドメイン)モデルを描く必要があります:
クライアント(clientID、名前、名前、電話)
住所(clientID、number、street、cityZipCode)
都市(cityZipCode、cityName)
訪問(clientID、visitDate、totalPrice)
サービス(serviceID、serviceName)
基準(criteriaName、size、measureUnit)
ServicePriceCriteria(serviceID、criteriaName、size、price)
VisitItem(clientID、visitDate、serviceID、criteriaName、size、quantity)
私の最大の問題は、1つのサービスが異なる基準に対して異なる価格を持つことができることをどのように提供するかでした。
つまり、トラックのオイル交換には15ユーロかかります。SUVの場合、同じサービスの費用は8ユーロです。他の例は、価格がホイールのサイズによって異なる場合です。14インチのホイールの場合、一部のサービスの料金は10ユーロで、17インチのホイールの場合の同じサービスの料金は15ユーロです。
したがって、最初の例では、 Service(123、'Oil Changes')、 Criteria('typeOfVehicle'、'Truck'、null)、 ServicePriceCriteria(123、'typeOfVehicle'、'Truck'、15)があります。
Service(123、'Oil Changes')、 Criteria('typeOfVehicle'、'SUV'、null)、 ServicePriceCriteria(123、'typeOfVehicle'、'SUV'、8)
2番目の例では、次のようになります。 サービス(124、「一部のサービス」)、 基準(「ホイールのサイズ」、「14」、インチ)、 ServicePriceCriteria(124、「ホイールのサイズ」、「14」、10)
サービス(124、「一部のサービス」)、 基準(「ホイールのサイズ」、「17」、インチ)、 ServicePriceCriteria(124、「ホイールのサイズ」、「17」、15)
あなたが私の考えを理解してくれることを願っています。私はあなたにこれが私の解決策でまったく受け入れられるかどうか尋ねたいと思いますか?そして、このデータベースのこの正しいドメインモデルは次のとおりです。
c# - ドメインモデルに基づく境界線の色?
ドメイン モデルに poco クラスがあります。
リストボックス項目テンプレートに表示しています。
しかし、私がやりたいのは、HasPlayed が true の場合、境界線の背景色が赤に変わり、false の場合は緑になります。これらのブラシはリソース ディクショナリにあります。
ドメイン モデルにブラシを追加することもできますが、それでは懸念事項の分離が無効になります。また、今後チェックボックスを使用するつもりはありません。これは単なる UI のモックアップです。
IValueConverter を試しましたが、プロパティが変更されても変更されません。モデルは INotifyPropertyChanged を実装します。
プロパティが変更された場合、どのように色を変更しますか?
php - How to effectively slice tabular data using data mapper and domain model?
Let's say I have two tables: Book
and Category
. Book
has a foreign key to Category
. Book can only have on category. Let's say I want to display this table:
With domain model and data mapper (Fowler's definition), we have Book
and Category
objects, each with their own mappers. The problem here is since both are separated entities, I end up with lots of queries run to display the above simple table:
That's one query to get the list of books to display, along with many queries to get the appropriate category objects related to each books.
The thing is, with SQL, I can slice the data any way I want. I can actually get all the data I need with one query:
Can I use this SQL while still maintaining separation between presentation, data source and domain logic layer? If I can, how? How can we effectively slice data we wanted to display?
entity-framework - 階層型POCOオブジェクトとリポジトリ
物理モデルに1:1で対応するドメインモデルがあるとします。また:
- 物理モデルのすべてのテーブルには、主キーとして列名「Id」があります
- 多くのテーブルには「LastChanged」タイムスタンプ列があります
- 一部のテーブルにはローカライズされたデータが含まれています
目的:ドメインモデルクラス(POCO)と適切なリポジトリを作成します。ツール-VS2010、EF4.1
最も明白なアプローチは、DBからEFモデルを生成し、その上でT4POCOGeneratorを実行することです。出力はPOCOクラスのセットです。
これまでのところ良いですが、リポジトリを実装するときにいくつかのコードの重複に遭遇します。インターフェイス定義レベルの両方:
そして、実装レベルでは:
上記のコードのほとんどはより一般的に記述できることを考慮に入れると、次のアプローチを取ることもできます。
POCOオブジェクト階層を作成します。
そして、基本実装のリポジトリ階層:
後者のアプローチの魅力的な利点は、コードがはるかに構造化されているため、コードの重複を回避できることです。
しかし、このシナリオは、大量の手作業の表面を開くT4コード生成にはほとんど適していません。
次のことを考えていることを教えていただければ幸いです。
- コードの美しさは、手動で実装する手間をかけるだけの価値があると思いますか?
- コードの重複を取り除く他の方法はありますか?
sorting - grailsオブジェクトのpersistentSetをソートする方法は?
私は2つのドメインモデルを持っています:
コントローラ:
だからそして今私のgspで:
私の質問は、この「item.resources」をどのようにソートできるかということです。これは永続的な休止状態のセットです!これはマッピングソート名:'asc'で処理できると思いましたが、機能しません:-(
entity-framework - Entity Framework 4 で生成された POCO へのコードの追加
EF 4 エンティティ ダイアグラムから開始し、T4 テンプレートを使用して、ドメイン モデル内で使用できる POCO クラスを作成できます。生成されたコードは次のようになります。
プロパティを実装するための独自のコードを追加するエレガントな方法はありますか? たとえば、すべての文字を下げることで実装したい名前セッター。私のコードが EF ダイアグラムから POCO クラスを繰り返し再生成することに抵抗することを望みます。
この要件は、検証コードを POCO クラスに追加するのと似ています。MetadataType
この問題は、別の検証クラスを作成し、属性を介して POCO にリンクすることで既に解決されています。その個別の検証クラスは、EF ダイアグラムから POCO を繰り返し再生成しても上書きされません。
ありがとう、
ルシアン
grouping - ドメイン モデルとグループ化されたデータ
私はドメイン モデルのアイデアを理解し始めていますが、これがドメイン モデルでどのように実現されているか見落としていることが 1 つあります。それは、グループ化されたデータです。最も明白な例は、動的な列のグループ化とユーザー指定の列の順序の有無にかかわらず、さまざまなレポートです。
具体例を挙げてみます。次のドメイン モデルを想像してください。
シンプルな 3 レベルのリストとして表示されます。
次に、生産品目から「長さ」フィールド (表示のためだけに、Position エンティティ自体は変更されません) を追加し、このフィールドでグループ化して、Position レベルを変更する必要があります。
そして次の要件は、ポジションレベルの生産品目レベルから別の合計フィールド「重量」を追加することです。繰り返しますが、展示のみです。
この「人工」モデルを実現するには、何を変更する必要がありますか?
位置に行く場所には、ある種の複合値オブジェクトが必要なようです: すべての位置エンティティ フィールド + サイズ フィールド + 重量フィールド。私は正しい軌道に乗っていますか?