代码之家  ›  专栏  ›  技术社区  ›  Dejell

了解hibernate缓存

  •  3
  • Dejell  · 技术社区  · 14 年前

    @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;
    }
    

    我把 @cache 两个都打开 ObjectEntry Object

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

    我还需要像这样在getObjectEntries上放置@cache吗:

    @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
    

    ?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Pascal Thivent    14 年前

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

    是的,你还是要 如果您愿意(将缓存在特定的缓存区域中)。

    如果我特别添加 hibernate.cache.use_query_cache = true

    hibernate.cache.use_query_cache 属性(节) 3.4. Optional configuration properties ):

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

    所以,是的,你仍然需要设置一个查询 可唱的 setCacheable(true)