这个问题的最大改进是ehcache现在(从2.1开始)支持transactional
hibernate cache policy。这极大地缓解了此问题中描述的问题。
为了更进一步(在访问同一查询缓存区域时锁定线程),需要实现QueryTranslatorFactory以返回自定义(扩展)的QueryTranslatorImpl实例,该实例将检查查询和参数,并根据需要在list方法中进行阻塞。当然,这与使用获取许多实体的hql的查询缓存的特定用例有关。
避免对同一缓存区域进行多次填充(由于并发)
这个问题的最大改进是ehcache现在(从2.1开始)支持transactional
hibernate cache policy。这极大地缓解了此问题中描述的问题。
为了更进一步(在访问同一查询缓存区域时锁定线程),需要实现QueryTranslatorFactory以返回自定义(扩展)的QueryTranslatorImpl实例,该实例将检查查询和参数,并根据需要在list方法中进行阻塞。当然,这与使用获取许多实体的hql的查询缓存的特定用例有关。