問題タブ [value-objects]
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 - これらは同義語ですか、相互のサブセットですか、それとも完全に異なりますか?
質問のタイトルで言及されている概念は、ある程度同義ですか?主な違いはどこにあり(コンテキスト、構造など)、あるものを別のサブセットと見なすことができますか?ウィキペディアから抜粋した簡単な定義を次に示します。
POJO(Plain Old Java Object) Wikipedia
コンピューティングソフトウェアでは、POJOはPlain OldJavaObjectの頭字語です。この名前は、特定のオブジェクトが通常のJavaオブジェクトであり、特別なオブジェクトではなく、特にEnterpriseJavaBeanではないことを強調するために使用されます。この用語は、2000年9月にマーティンファウラー、レベッカパーソンズ、ジョシュマッケンジーによって造られました。
Java BeanWikipedia
JavaBeansは、ビルダーツールで視覚的に操作できるJava用の再利用可能なソフトウェアコンポーネントです。実際には、これらは特定の規則に準拠したJavaプログラミング言語で記述されたクラスです。これらは、多くのオブジェクトを単一のオブジェクト(Bean)にカプセル化するために使用されるため、複数の個別のオブジェクトとしてではなく、単一のBeanオブジェクトとして渡すことができます。JavaBeanは、シリアライズ可能で、nullaryコンストラクターを持ち、getterメソッドとsetterメソッドを使用してプロパティにアクセスできるJavaオブジェクトです。
値オブジェクト ウィキペディア
以前は値オブジェクトまたはVOと呼ばれていたデータ転送オブジェクト(DTO)は、ソフトウェアアプリケーションサブシステム間でデータを転送するために使用されるデザインパターンです。DTOは、データベースからデータを取得するために、データアクセスオブジェクトと組み合わせて使用されることがよくあります。
ビジネスオブジェクト ウィキペディア
ビジネスオブジェクトは、n層のオブジェクト指向コンピュータプログラムのビジネス層内のアクターである理解可能なエンティティの一種です。
関連している:
DTO、VO、POJO、JavaBeansの違いは? JavaBeanとPOJOの違いは何ですか? DDD:エンティティと値オブジェクトの違いの使い方は何ですか?
hibernate - DDD と、Hibernate を使用して複雑な値オブジェクトを db に格納する
Eric Evans ( http://dddcommunity.org/examples ) によって書かれたサンプル DDD プロジェクトには、エンティティ オブジェクトであり、hibernate を使用して db テーブルにマップされる Cargo クラスがあります。この Cargo ドメイン オブジェクトは、いくつかの値オブジェクトで構成され、そのうちの 1 つが Delivery です。この Delivery 値オブジェクトは、10 個のフィールドがあるため非常に複雑です。それにもかかわらず、Delivery はフラットなオブジェクトであるため、Cargo と同じテーブルの db に完全に格納されます。
私は自分のアプリでエヴァンスの例に従いましたが、いくつかの問題に到達したので、あなたが助けてくれることを願っています.
集計ルートである InvoiceDefinition エンティティ オブジェクトがあります。特に、値オブジェクトである InvoiceLine タイプのフィールドがあります。InvoiceLine は、InvoiceDefinition から分離して存在することはできません。秘訣は、InvoiceLine が子 InvoiceLine 値のリストを持つリーフ ノードまたはツリー ノードのいずれかになることです。したがって、再帰構造を形成します。
これは有効な値オブジェクトとして渡すことができますか? 休止状態を使用してそのような値オブジェクトをdbに保存する方法は?
oop - 同じクラスの OOP 値オブジェクトとエンティティ
私は、古い手続き型の PHP Web サイトをリファクタリングして、風味を加えるためにドメイン駆動設計を少し散りばめたおいしい OOP アプリケーションにしています。
エンティティまたは値オブジェクトのいずれかであるサブクラスを持つことができるクラスが必要な場合につまずきます。
たとえば、url オブジェクト。そこには無数の URL があるため、それらすべてが実際にエンティティになることはできません。しかし、いくつかは私のホームページのように非常に特別な URL です。それが実体です。
もう 1 つの例は、たとえば「構成オブジェクト」です。「プリセット」を作成してオンライン コントロール パネルから管理できるように、一部の構成に ID を設定したいと考えています。それらの場合、それらを見つけるためにファインダー/リポジトリが必要であり、それらの寿命を管理するにはORMが必要です。しかし、他の「非プリセット」(同じクラス階層の) については、その場でカスタマイズされ、永続化する必要のないデータをロードできるようにしたいと考えています。
私は多くのことを想定しています:
それはすべて少し奇妙に思えます。
この問題を処理する最善の方法を議論するパターンはありますか?
php - PDOプリペアドステートメントを使用してSELECTLIKEを実行する方法-ここで使用する値オブジェクトはありますか?
重要なのは、ユーザーが入力ボックスに導入した値を取得するクエリを作成し、そのキーワードの比較で見つかったデータベースレコードを取得することです。
innodbエンジンでは、MATCH AGAINSTが利用できないので正しいですか?インデックス付きの列テーブルでLIKEを使用しますが、問題がないことを願っています。
伝統的に私たちは行います:
したがって、クエリ文字列がABの場合、「lab」と「abnormal」の両方を正確に取得しますか?
1) PDOを使用することで、これをどのように達成できますか?
考え:
何かのようなもの、
しかし、次は何ですか?
通常、私は次のことを行います。
2) この場合、VOは役に立ちますか?
よろしくお願いします!
c# - コンテナ船の質問
次の例を検討してください。
ここで、User クラスに CompanyCode プロパティを持たせたいと考えています。最初の明らかな解決策は、単に User クラスに CompanyCode プロパティを配置することです。
ここでの問題は冗長性です。これは、Company クラスにプロパティ CompanyCode が既に存在するためです。ユーザーが Company クラスを継承せずに Company の CompanyCode プロパティを使用できるようにする方法はありますか (ここでの問題は、C# がクラスの多重継承を許可していないことです)。 ICompany インターフェイスを使用します (ただし、値オブジェクトではインターフェイスが面倒です)。Company クラスを User クラスに含めることだけを考えていますが、適切な CompanyCode のみを使用します。
このようなもの..
しかし、文字列プロパティ CompanyCode を追加するだけでも違いはありません。皆さんのアドバイスが必要です。前もって感謝します..
java - 「値オブジェクト」という用語の語源/意味は何ですか?
私は.NET / PHPのバックグラウンドを持つプログラマーです。
最近、 Flashbuilder 4 / ActionScriptに関するビデオ トレーニングをレビューしました。ビデオ トレーニングのビデオの 1 つは、 「値オブジェクトを使用したデータ モデルの作成」という名前です。「値オブジェクト」は私にとってなじみのない用語であり、「モデル」を意味するかどうかはよくわかりませんでしたが、「モデル」としてしか理解できないので少し混乱しましたが、タイトルは示唆しています値オブジェクトを使用してモデルを作成していることは、それらが 2 つの異なるエンティティであることを示唆しています。
トレーナーは、これはJava ではかなり一般的な用語であり、「転送オブジェクト」と呼ばれることもあると言われました。実際、「値オブジェクト」のウィキペディアのページは「データ転送オブジェクト」にリダイレクトされ、このようなスタックオーバーフローの質問では、「値オブジェクト」は「 Java のマップされたオブジェクト」である可能性があると言及されています。
この用語の語源は何ですか? また、他のデータ モデル関連の用語とどのように関連していますか? それはJavaの世界から来て、ある時点で広く使われなくなったのですか?
nhibernate - Nhibernateコンポーネントマッピング:データベースからのクエリ中に値オブジェクトの親オブジェクトがnull
次のマッピング構成を使用して、値オブジェクトアイテムをコンポーネントとしてマッピングしています
データベースにデータを挿入できますが、製品IDで取得しているときに、アイテム行の製品プロパティがnullになります。
マッピング>で参照を渡す必要がありますか?
助けてください
ありがとうございました、
3月
nhibernate - 値オブジェクトの等価性を比較するときに null を処理する方法は?
注: 例として C# を使用しますが、Java や他の多くの言語でも問題はほぼ同じです。
値オブジェクトを実装し ( M. Fowler による値オブジェクト パターンのように)、null 可能なフィールドがあるとします。
次に、Equals() をオーバーライドするときに、両方の値オブジェクトの MyField が null に設定されている場合をどのように処理しますか? それらは等しいかどうか?
C# では、次の理由から、それらを同等に扱うことは明らかです。
これは、クラスの代わりに C# 構造体を使用し、Equals() をオーバーライドしない場合の Equals() の動作です。
次の式は true です。
/li>
ただし、SQL では (少なくとも SQL Server の方言では)、NULL = NULL
は false ですが、NULL is NULL
は true です。
O/R マッパー (私の場合は NHibernate) を使用する場合、どのような実装が期待されるのか疑問に思っています。「自然な」C# 等価セマンティクスを実装すると、O/R マッパーがそれらをデータベースにマップするときに悪影響が生じる可能性がありますか?
それとも、値オブジェクトで null 許容フィールドを許可するのは間違っているのでしょうか?
c# - C# - 値によるマーシャリングの問題!
これが問題です。リモートメカニズム「値によるマーシャリング」を使用して新しいオブジェクトを作成する際に問題があります。
これが私のクラスです:
しかし、別の「appdomain」にオブジェクトを作成しようとすると、「Empleado」のプロパティ「_AppDomainHost」には、作成した「appdomain」が表示されず、デフォルトで「appdomain」が表示されます。いくつかのアイデア?
結果:
DEMO_MBV_MBR.vshost.exe
MBV : DEMO_MBV_MBR.vshost.exe
私が望む結果:
DEMO_MBV_MBR.vshost.exe
MBV : NewAppDomain
domain-driven-design - DDD の値オブジェクト - なぜ不変なのですか?
DDD の値オブジェクトを不変にする理由がわかりません。また、これを簡単に行う方法もわかりません。(問題があれば、C# と Entity Framework に焦点を当てています。)
たとえば、従来の Address 値オブジェクトを考えてみましょう。"123 Main Street " を "123 Main Street " に変更する必要がある場合、myCustomer.Address.AddressLine1 = "123 Main Street" と言う代わりに、まったく新しいオブジェクトを作成する必要があるのはなぜですか? (Entity Frameworkが構造体をサポートしていたとしても、これはまだ問題ですよね?)
値オブジェクトにはアイデンティティがなく、ドメイン オブジェクトの一部であるという考えは理解していますが (私はそう思います)、誰かが不変性が良いことである理由を説明できますか?
編集:ここでの私の最後の質問は、「値オブジェクトに適用される不変性が良いことである理由を誰かが説明できますか?」です。混乱させて申し訳ありません!
EDIT:明確にするために、私はCLR値型(対参照型)について尋ねていません。値オブジェクトのより高いレベルの DDD の概念について質問しています。
たとえば、Entity Framework の不変値型を実装するためのハック的な方法を次に示します: http://rogeralsing.com/2009/05/21/entity-framework-4-immutable-value-objects。基本的に、彼はすべてのセッターを非公開にするだけです。なぜこれを行うのに苦労するのですか?