0

Hibernateの1対1の関連付けは、これらの方法の1つによって確立できます。

  1. 両方のクラスのプロパティは、同じテーブルで維持されます。
  2. エンティティは、同一の主キーを持つ個別のテーブルで管理できます。
  3. エンティティは、一方のエンティティからもう一方のエンティティへのキーを使用して、個別のテーブルで維持できます (2つのテーブル間の外部キー関係)

私は知りたいです:

  • データベーススキーマのみに依存しますか?
  • これらのアプローチの長所と短所は何ですか?特に私は2つ以下を知りたいです。
4

1 に答える 1

0

同じテーブル(コンポーネント)にマップされているクラスは、保守が簡単です。データが使用されなくなったときにレコードをクリーンアップする必要はありません。カスケードの問題はありません。また、結合されたテーブルよりも高速です。ただし、コンポーネントが識別されていないため、コンポーネントを照会することはできません。

結合を使用して、コンポーネント(または他の数のプロパティ)を別のテーブルにマップすることもできます。そうすることには技術的な理由があるかもしれません、そしてアプリケーションの観点からの違いはありません。結合は、同一の主キーを使用するHibernateによっても実装されます。

1対1の関係を使用する場合は、独立したエンティティをリンクします。両方を照会できます。それらの1つには独自のIDジェネレーターがなく、もう1つからIDを取得するため、もう1つに依存します。1対1の関係をマッピングするときは、理解するのが難しく、実際には非常にまれであるため、常に問題がありました。

または、通常の外部キー(多対1 )を使用してエンティティをマップすることもできます。これは通常、理解と保守が容易です。欠点は、データベース内の別の外部キーです。これは、1対1を使用することで回避できます。

于 2012-08-22T06:04:40.130 に答える