我正在使用JCache来缓存Web响应。缓存键包括以下字段:
我创建了ResponseKey类并将其用作缓存键类型:
WHERE id in (select id from mytable where status='green' and rownum<=10 order by impact desc )
示例代码(工作正常):
public class ResponseKey implements Serializable {
private String controller;
private String action;
private Object[] parameters;
@Override
public int hashCode() { // IMPL }
@Override
public boolean equals(Object obj) { // IMPL }
}
另一种方法是使用String作为缓存密钥类型:
JCache<ResponseKey, byte[]> cache = ...
ResponseKey key = new ResponseKey("category", "list", new Object[] { 1 });
cache.put(key, bytesContent);
由于String类型比ResponseKey类型更轻,因为序列化/反序列化。
我的问题是:我应该使用String键而不是ResponseKey键吗?
答案 0 :(得分:1)
这个问题可能没有确切的答案,因为每种方式都有利弊。两者都有效。
/
。 =&GT;所以我建议使用String
,因为它有更多的优势。
注意:在具有复杂值类型的其他语言中,还有另一个更好的选择,即使用仅包含String的值类型,但提供其他类型安全性以及(de)组成其组件的方法。