Je compare les gains de performance obtenus avec l'utilisation d'un cache de second niveau dans Hibernate (activation de EhCache), mais cela ne semble pas améliorer les performances. En fait, le temps d'exécution de la requête augmente légèrement.Utilisation de EhCache pour session.createCriteria (...). List()
La requête est:
session.createCriteria(MyEntity.class).list();
L'entité est:
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class MyEntity {
@Id
@GeneratedValue
private long id;
@Column(length=5000)
private String data;
//---SNIP getters and setters---
}
Mon hibernate.cfg.xml est:
<!-- all the normal stuff to get it to connect & map the entities plus:-->
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
Le tableau de MyEntity contient environ 2000 lignes.
Le problème est qu'avant d'ajouter dans le cache, la requête ci-dessus pour lister toutes les entités prenait en moyenne 65 ms. Après le cache, ils prennent en moyenne 74 ms. Y a-t-il quelque chose qui me manque? Y a-t-il quelque chose de supplémentaire à faire qui augmentera la performance?
Merci, j'ai activé le cache de requête et cela fait définitivement une différence. La requête est passée de 65 ms à 22 ms après son échauffement. –
@James: La différence devrait être plus perceptible avec une requête plus complexe. – skaffman