我有一个用 JPA 表示的用户对象,它具有特定的子类型。例如,想想用户,然后是一个子类 Admin,以及另一个子类 Power User。
假设我有 10 万用户。我已经使用 Ehcache 成功实现了二级缓存,以提高性能并验证它是否有效。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-cache
我知道当您调用 load 方法时它确实有效(即,您从缓存中加载对象而不是调用 sql 查询)。我已经通过休眠级别的日志验证了这一点,并验证了它是否更快。
但是,我实际上想选择所有用户的一个子集......例如,假设我想计算有多少高级用户。
此外,我的用户有一个关联的 ZipCode 对象……ZipCode 对象也是二级缓存……我想要做的实际上是能够询问诸如……我在 New 中有多少高级用户约克州...
但是,我的问题是......我如何编写一个查询来执行此操作,该查询将访问二级缓存而不是数据库。请注意,我的二级缓存配置为读/写...因此,当新用户添加到系统中时,它们应该自动添加到缓存中...另外...请注意,我已经简要调查了查询缓存,但是我不确定它是否适用,因为这适用于多次运行的查询……我的问题更多的是……数据无论如何都应该在二级缓存中,所以我该怎么做才能使当我编写查询时,数据库没有受到影响。
干杯,布赖恩