2011-11-07 10 views
3

オブジェクトレベルでのエンティティと値の型の違いは何ですか?エンティティにはIDが割り当てられますが、値には影響しませんが、エンティティと値の型をマッピングする方法が異なるのはなぜですか。休止状態のエンティティと値のタイプ

hibernateが任意の最適化を値型に適用できるようになっていますか?

答えて

10

エンティティは、永続化されているテーブルをすでに定義しています。したがって、エンティティAにBエンティティのリストがある場合、Bのターゲットテーブルを定義する必要はありません。Bはすでにそれを定義しています。値型には関連するテーブルがないため、エンティティAのList<String>のマッピングでは、このリストの格納に使用するテーブルを定義する必要があります。

さらに、値の型は、定義すると、常にその包含エンティティによって完全に所有されます。エンティティを削除すると、このエンティティに関連付けられているすべての文字列も削除されます。エンティティの場合はそうではありません。コースエンティティを削除すると、その生徒をすべて削除することはありません。

これは、異なるマッピングプロパティを定義する必要があることを示す2つの例です。

0

エンティティタイプのオブジェクトには独自のIDがあります。値タイプのオブジェクトにはデータベースIDがなく、エンティティに属します。 値型オブジェクトは所有エンティティによって識別されます