2010-07-06 3 views
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; 
} 

을 나는 ObjectEntryObject

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

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

@cache 모두 넣어 난 여전히 같은 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 

?

답변

0

(...) 나는 아직도이 같은 getObjectEntries에 @cache 넣어해야합니까 : 당신이 (즉, 캐시됩니다하려면 예, 당신은 여전히 ​​캐시 모음에있는

특정 캐시 영역에서).

쿼리 캐시를 활성화합니다 :

내가 특별히 hibernate.cache.use_query_cache 특성 (섹션 3.4. Optional configuration properties)에 대한 참조 문서에서 hibernate.cache.use_query_cache = true

를 추가하면 내가 각 쿼리 캐시를 정의해야합니까. 개별 쿼리는 여전히 캐시 가능으로 설정되어야합니다. 예 :true | false

그래서, 그래, 당신은 여전히 ​​쿼리를 설정해야 캐시 할 (쿼리 또는 기준에 setCacheable(true)를 호출하여 객체) 당신이 원하는 경우 - IMO 좋은 일이다.

+0

하나 더 질문드립니다. 왜 getObjectEntries 컬렉션을 캐시해야합니까? 메모리를 너무 많이 확장하지 않습니까? 최대 절전 모드로 모든 개체에 대한 참조가 아닌 존재하는 개체에 대한 참조 만 저장할 수 있습니까? – Dejell