Locationタイプの@JoinColumnフィールドを持つ多くのHibernateエンティティがあります。位置データは基本的に静的であるため、完全にメモリにキャッシュすることにしました。
当初の計画では、すべてのLocationフィールドをlocationIdフィールドに置き換えることでした。ただし、特に既存のツールでは簡単に取得できない場所フィールドを参照するCriteriaクエリがあるため、これは手間がかかりすぎることにすぐに気付きました。
別の方法は、locationIdsをデータベースからLocationオブジェクトにマップするカスタムHibernateタイプを実装することですが、キャッシュBeanをカスタムタイプインスタンスに注入する簡単な方法はないようです。
(私たちのバージョンのHibernateはConfiguration.registerTypeOverride()呼び出しを提供しないため、Typeインスタンスのインスタンス化を制御できず、したがって注入する方法がありません。)