2010-07-06 36 views
3

Si j'ai cette méthode dans la classe d'objet:cache de mise en veille prolongée compréhension

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

et je mets @cache à la fois sur ObjectEntry et Object

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

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

Ai-je besoin de mettre @cache sur getObjectEntries comme ceci:

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

Dois-je définir e cache pour chaque requête si j'ajoute spécifiquement

hibernate.cache.use_query_cache = true 

?

Répondre

0

(...) Est-ce que je dois encore mettre @cache sur getObjectEntries comme ceci:

Oui, vous avez encore à cache une collection si vous voulez (qui sera mis en cache dans une région de cache spécifique).

Ai-je besoin de définir le cache pour chaque requête si j'ajoute spécifiquement hibernate.cache.use_query_cache = true

De la documentation de référence sur la propriété hibernate.cache.use_query_cache (section 3.4. Optional configuration properties):

Active le cache de requêtes. Les requêtes individuelles doivent encore être mises en cache. par exemple.true | false

Alors, oui, vous avez encore à définir une requête cachable (en appelant setCacheable(true) sur une requête ou critères objet) si vous voulez - qui est l'OMI une bonne chose.

+0

une autre question. Pourquoi ai-je besoin de mettre en cache la collection de getObjectEntries? Cela ne va-t-il pas trop agrandir la mémoire? Est-ce que Hibernate peut juste sauvegarder une référence à l'objet qui existe et pas une référence à tout le collecion? – Dejell