2011-02-03 4 views
1

"Is it really worth implementing toString() for entity classes?"と尋ねました。私が受け入れたanswerは、エンティティの「名前」または「ID」を書くエンティティクラスのメソッドの有用性を実証しました(そして、それ以外はあまりありません)。しかし、これは、エンティティに "名前"または "ID"を持つことを要求します。エンティティクラスは常にIDフィールドを持つべきですか

したがって、エンティティクラスは常ににIDフィールドが必要です。あなたがそれを自然に持っていなければ、それを加えれば、it is useful only for debugging? A private final long、おそらく?それはcan be done elegantly and efficientlyです。

私は必ずデータベースバックアップされたクラスについて話していません。ここでエンティティによって、私は(X null以外用)不変を持つクラスを意味

x.equals(y) == (x == y) 

答えて

0

IDは、ほぼ不変一意にかかわらず、持っている任意の他の、永続的なレコードを識別するフィールドを参照しますその永続レコードから水和されたオブジェクトのインスタンス間で変更されました。

あなたの質問に対する答えは「いいえ」です。「ドメイン」クラスにIDフィールドがある必要はありません。ほとんどの場合、ほとんどの場合、あなたのドメインを維持したいと思うので、その場合はベストプラクティスです(例えば、ファーストネーム、姓、DOB、SSNの複合PKからパンツを打ち負かしてください)。メモリ内のもの、おそらくビューヘルパーやビジネスロジッククラスを保持するクラスは気にしません。

関連する問題