私はehcacheを使用しています(Grailsプラグイン経由)。オブジェクトをキャッシュに追加するメソッドでは、キーをシリアライズ可能にする必要があるため、一般的な使用法は次のようになります。
def key = 22
def someObject = new Object();
cacheService.cache(key, true, someObject)
(boolean パラメータは、オブジェクトを分散キャッシュまたはローカル キャッシュに追加する必要があるかどうかを示します)
私の質問は、次のような値オブジェクトからキーを生成する方法です。
class Person implements Serializable {
String firstName
String lastName
Integer age
}
1 つのアプローチは、hashCode() および equals() メソッドを提供し、hashCode をキーとして使用することです。この場合、Person クラスに Serializable を実装させる必要はありません。
あるいは、単に Person オブジェクト自体をキーとして使用することもできます。equals メソッドと hashCode メソッドを提供する必要があるようですが、Serializable を実装する必要もあります。ただし、Person は Person の別のインスタンスとしか等価にならないため、このアプローチを使用すると衝突の可能性が低くなるように思われます。
ehcache はキーの equals() メソッドを使用して、そのキーがキャッシュに既に存在するかどうかを判断すると仮定していますが、この仮定は正しいですか?
上記で概説したアプローチのいずれかが他のアプローチよりも本質的に優れているか、または私が考慮していない別のアプローチがありますか?
ありがとう、ドン