Hibernate est une bibliothèque de mappage objet-relationnel pour le langage Java. Il vous fournit un mappage des classes Java à la table de base de données et réduit le cycle de développement global. En raison des avantages offerts par Hibernate, de plus en plus d'applications hautement transactionnelles sont développées à l'aide d'Hibernate. Voici un exemple d'hibernation dans une application Java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.hibernate.*; public class HibernateSample { ... Session session = factory.openSession(); session = factory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from Customer c"); Iterator it = query.list().iterator(); while (it.hasNext ()){ Customer customer = (Customer) it.next(); ... } tx.commit(); session.close(); } |
Mais ces applications Hibernate à fort trafic rencontrent un problème majeur d'évolutivité. Bien qu'ils soient capables d'évoluer au niveau de l'application, leur base de données ou leur stockage de données ne peut pas évoluer avec le nombre croissant de charges transactionnelles.
La mise en cache distribuée Java est la meilleure technique pour résoudre ce problème car elle réduit les déplacements coûteux vers la base de données qui causent des goulots d'étranglement d'évolutivité. Pour cette raison, Hibernate fournit une infrastructure de mise en cache qui comprend un cache de premier et de second niveau.
Le cache de premier niveau Hibernate vous fournit un cache autonome de base (in-proc) qui est associé au Session objet et est limité à la session en cours uniquement. Mais, le problème avec le cache de premier niveau d'Hibernate est qu'il ne permet pas le partage d'objet entre différentes sessions. Si le même objet est requis par différentes sessions, toutes font le voyage de la base de données pour le charger, ce qui augmente éventuellement le trafic de la base de données et pose un problème d'évolutivité. De plus, lorsque la session est fermée, toutes les données du cache sont également perdues et la prochaine fois, vous devrez les récupérer à nouveau à partir de la base de données.
Ces applications Hibernate à fort trafic avec uniquement le premier niveau lorsqu'elles sont déployées dans la ferme Web sont également confrontées à un problème de synchronisation du cache du serveur. Dans une ferme Web, chaque nœud exécute un serveur Web - Apache, Oracle WebLogic, etc. - avec plusieurs instances de httpd processus pour servir les requêtes. Et, mise en veille prolongée du cache de premier niveau dans chaque httpd processus de travail a une version différente des mêmes données mises en cache directement à partir de la base de données.
C'est pourquoi Hibernate vous fournit un cache de second niveau avec un modèle de fournisseur. Mettre en veille le cache de second niveau permet de brancher 3rd fournisseur de mise en cache distribué par les parties (out-proc) pour mettre en cache l'objet entre les sessions et les serveurs. Le cache de second niveau Hibernate est associé à Usine de session objet et est disponible pour l'ensemble de l'application, au lieu d'une seule session.
Lorsque vous activez le cache de second niveau Hibernate, vous vous retrouvez avec deux caches ; l'un est le cache de premier niveau et l'autre est le cache de deuxième niveau. Hibernate essaie toujours de récupérer les objets du cache de premier niveau en cas d'échec en essayant de les récupérer du cache de second niveau. Si cela échoue également, les objets sont directement chargés à partir de la base de données et également mis en cache. Cette configuration réduit considérablement le trafic de la base de données car la plupart des données sont servies par le serveur de second niveau. cache distribué.
NCache Java a implémenté un fournisseur de mise en cache de second niveau Hibernate en étendant org.hibernate.cache.CacheProvider. Vous pouvez facilement brancher NCache Fournisseur de mise en cache distribué Java Hibernate avec votre application Hibernate sans aucun changement de code. NCache vous permet de faire évoluer votre application Hibernate vers des configurations multi-serveurs sans que la base de données ne devienne le goulot d'étranglement. NCache vous fournit également toutes les fonctionnalités de mise en cache distribuée au niveau de l'entreprise telles que la gestion de la taille des données, la synchronisation des données sur le serveur et la base de données, etc.
Vous pouvez brancher NCache Fournisseur de mise en cache Java Hibernate en modifiant simplement votre fichier hibernate.cfg.xml et ncache.xml comme suit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hibernate-configuration> <session-factory> <property name = "cache.provider_class"> alachisoft.ncache.integrations.hibernate.cache.NCacheProvider, alachisoft.ncache.integrations.hibernate.cache </property> </session-factory> </hibernate-configuration> <ncache> <region name = "default"> <add key = "cacheName" value = "myClusterCache"/> <add key = "enableCacheException" value = "false"/> <class name = "hibernator.BLL.Customer"> <add key = "priority" value = "1"/> <add key = "useAsync" value = "false"/> <add key = "relativeExpiration" value = "180"/> </class> </region> </ncache> |
Ainsi, en utilisant NCache Fournisseur de cache distribué Java Hibernate, vous pouvez mettre à l'échelle linéairement vos applications Hibernate sans aucune modification de code.
Alors, téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.
Je veux simplement vous dire que je ne suis qu'un débutant dans les blogs et que j'ai vraiment apprécié votre site Web. Plus que probablement, je prévois de mettre votre blog en signet. Vous venez vraiment avec des histoires géniales.
Compte tenu de la quantité d'informations qu'il contient, ce type d'articles maintient l'intérêt des utilisateurs pour le site Web et continue à en partager davantage.
formation java à chennai
blog utile … merci pour le partage