7

私は冬眠するのが初めてです。私を助けてください。

Employee と Country という名前の 2 つのテーブルがあります。選択した国で Employee を保存する必要があります。私の場合、従業員の詳細を取得して UI に表示することはありません。Employee オブジェクトと Country オブジェクトの間のマッピング (1 対 1 のマッピング) を維持する必要がありますか? 選択した国で従業員を直接保存することはできませんか?

Employee ドメイン オブジェクトで以下のようにできますか?そうでない場合は、これに関する潜在的な問題を教えてください。

@column(name="countryId")

プライベート int countryId;

4

2 に答える 2

2

ここにはいくつかのオプションがあると思います。

  1. countryプリミティブをドメイン クラスから完全に除外することができます。必要がない場合、Hibernate にフェッチするように指示する理由はありません。
  2. それを変更するつもりがまったくない場合は、ドメインクラスにマッピングして@Transitiveアノテーションを適用すると、目的が達成される可能性があります。これにより、Hibernate は国 ID についてデータベース レベルで永続化する必要がないことを伝えます。

employeeこれらの方法はいずれも、オブジェクトと国 ID の間の参照整合性を確保するのに役立ちます。ただし、最初の使用をお勧めします。国 ID を必要とする理由がまったくない場合は、そもそもそれをオブジェクトの一部にしないでください。

裏面の関係に国 ID を使用する必要がある場合は、必ずこれを含めることをお勧めします。

@Column(name = "country", insertable = "false", updatable = "false").  

これにより、誤って上書きしてしまうことを恐れずに国 ID を取得できます。

それが役立つことを願っています!

于 2012-07-15T21:17:51.543 に答える
1

はい、従業員オブジェクトに countryId を入れることができます。しかし、国オブジェクトが今後必要ない場合は、国オブジェクトを保存しても意味がありません。

将来の見通しのために物事を開発しており、将来必要になる可能性があるが、現在は必要ない場合は、国オブジェクトを保存することをお勧めします。

于 2012-07-06T10:06:58.300 に答える