我们有许多Hibernate实体,其中@JoinColumn字段的类型为Location。位置数据基本上是静态的,因此我们决定将它们完全缓存在内存中。
最初的计划是用locationId字段替换所有位置字段。但是,我们很快意识到这是太多的工作,特别是因为有Criteria查询引用了现有工具无法轻易获取的位置字段。
另一种方法是实现将locationIds从数据库映射到Location对象的自定义Hibernate类型,但似乎没有任何简单的方法将缓存bean注入自定义类型实例。
(我们的Hibernate版本不提供Configuration.registerTypeOverride()调用,因此我们无法控制Type实例的实例化,因此无法注入。)
答案 0 :(得分:0)
在我的特定情况下,我可以为实体创建PersistenceProvider的子类,并在创建会话工厂后立即传递Spring上下文。