3

如果我在对象类中有这个方法:

@OneToMany( fetch = FetchType.EAGER,
    cascade = { CascadeType.ALL },
    mappedBy = "object"  )
@org.hibernate.annotations.Cascade(
    {org.hibernate.annotations.CascadeType.SAVE_UPDATE})
@Column( nullable = false  )
public Set<ObjectEntry> getObjectEntries() {
    return this.objectEntries;
}

我穿上@cacheObjectEntry穿上Object

@Cache(usage =  CacheConcurrencyStrategy.READ_WRITE)
public class Object extends HashCodeValidator {

@Cache(usage =  CacheConcurrencyStrategy.READ_WRITE)
public class ObjectEntry extends HashCodeValidator 

我是否还需要像这样将@cache 放在 getObjectEntries 上:

@org.hibernate.annotations.Cascade(
    {org.hibernate.annotations.CascadeType.SAVE_UPDATE})
@Column( nullable = false  )
@Cache(usage =  CacheConcurrencyStrategy.READ_WRITE)
public Set<ObjectEntry> getObjectEntries() {
    return this.objectEntries;
}

如果我特别添加,是否需要为每个查询定义缓存

hibernate.cache.use_query_cache = true

?

4

1 回答 1

0

(...) 我还需要像这样将 @cache 放在 getObjectEntries 上吗:

是的,如果您愿意,您仍然必须缓存一个集合(将缓存在特定的缓存区域中)。

如果我特别添加,是否需要为每个查询定义缓存hibernate.cache.use_query_cache = true

从关于hibernate.cache.use_query_cache属性的参考文档(第3.4 节。可选配置属性):

启用查询缓存。单个查询仍然必须设置为可缓存的。例如 true|false

所以,是的,如果你愿意,你仍然必须设置一个可缓存的查询(通过调用setCacheable(true)查询或条件对象)——这是 IMO 的一件好事。

于 2010-07-06T15:22:27.563 回答