Java永続性がHibernateの場合、gavinは等価比較のためにビジネスキーを使用することを提案しています。ビジネスキーには複数のフィールド比較が含まれるだけでなく、将来完全なビジネスキーのセマンティクスが変更されないという保証はありません。私たちは非理想的な世界に住んでおり、ビジネス要件や法律は頻繁に変わります。このような場合、複数のビジネス・キー・セマンティクスが格納されたデータベースにデータが残されます。問題を2つの部分に分割したい:HibernateオブジェクトID
- 永続オブジェクトまたは分離オブジェクトを厳密に処理するとき。
一時オブジェクトを扱うとき。
永続オブジェクトとデタッチされたオブジェクトを扱う場合、同等性とハッシュコードのためにサロゲートキーを使用することにはまだ下げ気味はありません。 2つの永続オブジェクトまたは分離されたオブジェクトは、同じ主キーを持つ場合は等価です。仮定するのは間違っていますか?
一時的なオブジェクトを処理する場合、ビジネスキーのセマンティクスを使用してオブジェクトを比較し、残りの属性で同じビジネスキーで異なる値を持つ2つの一時オブジェクトを保持しようとすると、
大量のトランザクションが読み取り/更新される読み取り負荷の高いアプリケーションでは、この戦略のほうがパフォーマンスが向上するはずです。
「ビジネスキー」とは何ですか? –
ビジネスキーはオブジェクトを一意に識別します。このキーは説明されたデータベースから来てはなりません。エンティティのUUIDまたは組み合わせまたはフィールドである可能性があります。 – JamesC