2013-10-13 12 views
30

@Embeddedおよび@Embeddableの使用方法Hibernateでは何ですか?インターネット上にあるすべての例は、1つのテーブルの中にデータを挿入し、2つの異なるクラスを使用してデータを挿入するためです。私が指摘するのは、単一のテーブルを使用している場合、すべての列を1つのクラスにマップすることができます。次に、別のクラスを使用する必要があります。 2つの異なるテーブルを使用すると、one-to-oneone-to-manyの休止関係があります。@EmbeddableをHibernateで使用する理由

答えて

59

値がオブジェクト
2.エンティティが一人で立つことができないオブジェクトで休止状態
1.値オブジェクト内のオブジェクトの2種類があります。たとえば、Addressとします。あなたが住所と言うなら、人々は誰の住所なのかを尋ねるでしょう。それで、それは一人で立つことはできません。

エンティティオブジェクトは、CollegeStudentのように独立している人です。

値オブジェクトの場合、エンティティオブジェクトにエンベッドするのが好ましい方法です。

2つの異なるクラスを作成する理由を答えるには:まず、クラス間の結合がゆるく、結合が強くなければならないというOOPSの概念です。つまり、特別な目的のためだけにクラスを作成する必要があります。たとえば、Studentクラスには、Studentに関連する情報のみが必要です。

第2のポイントは、異なるクラスを作成することによって再利用性を促進することです。

エンティティクラスの値オブジェクトを定義するときは、@Embeddableを使用します。
我々はエンティティクラスに値型のオブジェクトを使用する場合、我々は@Embedded

+0

今私は2つの異なるクラスを作成するためのロジックを理解し、私は組み込みを考えていたと埋め込みは、単一のテーブルのみに適用されますか?または複数のテーブルに使用することができます – NaN

+0

私は試みたことはありませんが、私はそれに直接的な害を見ることができないので、私たちは使用することができると信じて – ankit

+1

他のオブジェクトへの依存性は、例えば、アドレスは、一般的にエンティティまたはコンポジション/アグリゲーションとして再利用およびモデリングできます。 –

0

エンティティが別のエンティティに埋め込むことができる1つを使用します。エンティティの属性は、複数のエンティティの共通属性とすることができます。この場合、埋め込み可能なエンティティは1つあります。そして、この埋め込み可能なエンティティは、複数のエンティティに埋め込むことができます。

例を考えてみましょう。 namelocationの属性を持つ1つのAnimalエンティティがあります。今や、2つの異なるエンティティLionElephantは、Animalエンティティを埋め込むだけで、Animalの属性を持つことができます。属性をオーバーライドできます。 Animalにはlocation属性があり、Elephantにはplace属性があります。だから我々は、以下のように行うことができます@AttributeOverridesの助けを借りて:

@AttributeOverrides({ @AttributeOverride(name = "location", column = @Column(name = "place")) }) 
+0

これは、https://www.concretepage.com/hibernate/example-embeddable-embedded-hibernate-annotationのパラ相のようです。はいの場合は、その記事への参照を追加するか、何とかそれを引用としてマークする必要があります。 – Hervian

関連する問題