J'ai quelques classes qui ont une propriété qui est unique à cet objet, par exemple pour la classe User, la propriété Username ne devrait jamais être dupliquée. NHibernate ne semble pas supporter le chargement d'un objet par une clé unique qui est ensuite mise en cache de la même manière que Load() ou Get(). Ai-je raison de dire cela? Si je le suis alors je devrai juste jouer le mien via éventuellement une méthode d'extension sur les lignes de LoadByUniqueIndex (propriété lambda, clé d'objet).NHibernate mise en cache sur des index uniques?
2
A
Répondre
1
Oui, vous avez raison, NH n'obtient pas d'entités directement du cache pour autre chose que l'ID. Notez que tout sauf l'identifiant peut potentiellement changer et doit être recherché dans la base de données.
Soyez prudent lors de la mise en cache. "La mise en cache prématurée est la racine de tous les maux" ou quoi que ce soit. Sérieusement, si vous n'êtes pas sûr d'avoir des problèmes de performances notables, n'écrivez pas votre propre cache.
- Écrire du code qui transmet des entités en tant qu'arguments pour éviter que la même entité soit chargée plusieurs fois.
- Évitez les caches qui durent plus longtemps qu'une session. Vous aurez des données obsolètes si vous ne notifiez pas tous les changements.
- évitez les antémémoires statiques, utilisez le thread statique à la place. Cela évite le partage de données entre les sessions, ce qui romprait l'isolation de la transaction. Utilisez les caches de deuxième niveau si vous en avez vraiment besoin.
Si vous envisagez d'avoir un cache statique qui reste actif tant que l'application s'exécute, je peux vous dire qu'il vaut mieux l'éviter. Il ne fonctionnera pas correctement avec un effort raisonnable.
Questions connexes
- 1. Mise en cache des données chargées avec NHibernate
- 2. Mise en cache distribuée sur mono
- 3. Comment désactiver complètement la mise en cache dans nHibernate?
- 4. Mise en cache des bonnes pratiques
- 5. Mise en cache des requêtes avec HttpModule
- 6. Mise en cache des requêtes MySQL
- 7. mise en cache des fichiers JavaScript
- 8. mise en cache des données WebView (Android)
- 9. Configurer la mise en cache sur les entités et les relations dans Fluent Nhibernate?
- 10. Mise en cache de la sessionfactory
- 11. Mise en cache et évitement du contenu mis en cache
- 12. Mise en cache dans urllib2?
- 13. Mise en cache automatique web.config
- 14. Question sur LRU mise en œuvre Cache en Java
- 15. Mise en cache des vues partielles en asp.net MVC
- 16. intervalle rails mise en cache
- 17. Mise en cache des résultats agrégés dans Linq2SQL
- 18. Calcul des offres uniques sur un produit
- 19. IE7 pas Mise en cache Image CSS sur SSL
- 20. mise en cache du contenu Web (images) sur l'iPhone
- 21. La réponse jquery HTML est mise en cache sur IE
- 22. Mise en cache étrange aveC#include dans ASP.NET sur IIS6
- 23. Mise en cache des objets ASP.NET - combien coûte trop?
- 24. Mise en cache Django pour un blog
- 25. Comment récupérer des entités uniques via l'API NHibernate Criteria?
- 26. Requête de cache NHibernate
- 27. Mise en cache des fichiers swf dans l'application Flex
- 28. Comment configurer la mise en cache des requêtes dans EclipseLink
- 29. Mise en cache hors ligne HTML5
- 30. Problème de mise en cache CSS/Jscript
Ok merci Stefan, je vais attendre pour le moment. Au moins, je sais avec certitude comment fonctionne la mise en cache maintenant. –