Cache de deuxième niveau d'hibernation

Hibernate est une solution de mappage objet-relationnel open source populaire pour Java. Dans le but d'augmenter les performances, Hibernate fournit également la fonctionnalité de mise en cache. Hibernate fournit deux types de mise en cache, le cache de premier niveau et le cache de second niveau.

Le cache de premier niveau est intégré et utilisé par défaut, mais son utilisation est limitée, non accessible et il s'agit uniquement d'un cache en cours de processus. Le cache de second niveau fournit une architecture enfichable, ce qui signifie qu'un cache tiers peut être utilisé comme cache de second niveau pour Hibernate.

NCache fournit le fournisseur de cache de second niveau Hibernate qui peut être configuré sans aucune modification du code. Ce faisant, vous accédez au riche ensemble de fonctionnalités de mise en cache distribuées fournies par NCache.

NCache en tant que fournisseur de cache de deuxième niveau pour hibernate
Figure 1: NCache en tant que fournisseur de cache de deuxième niveau pour hibernate

installation NCache comme cache de second niveau pour Hibernate

Mise en place NCache car le cache de second niveau pour Hibernate est assez facile. Aucune modification du code réel n'est nécessaire. Seuls les fichiers de configuration doivent être modifiés.

Maintenant pour ajouter NCache en tant que cache de second niveau pour Hibernate, le fichier hibernate.cfg.xml doit être modifié de la manière suivante :

  • 2nd Le cache de niveau doit être activé en définissant le hibernate.cache.use_second_level_cache propriété comme vraie.
  • NCache doit être configuré en tant que fournisseur de cache de second niveau d'Hibernate en définissant le mise en veille prolongée.cache.region.factory_class propriété en tant que JCacheRegionFactory pour Hibernate 3.6 et supérieur.

Voici un exemple des changements apportés au hiberner.cfg.xml fichier:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property>
    ...
</session-factory>
</hibernate-configuration>

Configuration des régions de cache

Hibernate utilise régions de cache pour stocker des objets. NCache permet la configuration de ces régions de cache avec des propriétés différentes. le NCacheLe fichier Hibernate.xml est utilisé à cette fin. Ce fichier contient tous les paramètres et options de configuration pour les régions et les configurations associées utilisées par NCache.

Voici un exemple NCacheFichier de configuration Hibernate.xml où les régions sont configurées :

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
    <cache-regions>
        <region name="hibernator.BLL.Customer:Customer" cache-name="myPartitionedcache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
        <region name="DefaultRegion" cache-name="myPartitionedcache" priority="default" expiration-type="none" expiration-period="0" />
    </cache-regions>
	...
</application-config>
</configuration>

Configuration de la synchronisation de la base de données

NCache est un cache distribué polyvalent, efficace et efficace pour .NET Framework, .NET Core, et Java. Il est livré avec un large éventail de caractéristiques et de fonctionnalités. L'une de ces fonctionnalités est la synchronisation de la base de données via Dépendance SQL. C'est là que le cache vérifie la base de données pour tout changement et recharge ou supprime les éléments qui s'avèrent obsolètes ou redondants.

Vous avez la possibilité de configurer NCache en tant que fournisseur de cache de second niveau pour Hibernate afin d'utiliser la fonctionnalité de synchronisation de la base de données. Vous devrez appliquer les modifications suivantes au NCacheMise en veille prolongée.xml fichier:

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
  	... 
    <database-dependencies>
        <dependency entity-name="hibernator.BLL.Customer" type="oracle" sql-statement="select ContactName from Customer where CustomerID ='?'" cache-key-format="hibernator.BLL.Customer#[pk]" connection-string="Your Connection String"/>
    </database-dependencies>
</application-config>
</configuration>

Configuration du cache de requêtes Hibernate

Hibernate fournit une fonctionnalité de mise en cache des requêtes. Ici, les résultats des requêtes sont mis en cache dans le cache de second niveau. NCache vous permet de mettre en cache ces requêtes à l'aide de cette fonctionnalité. Cette fonction peut être activée en modifiant le hiberner.cfg.xml fichier de la manière suivante :

<hibernate-configuration>
  <session-factory>
  ...
  <property name="hibernate.cache.use_query_cache">true</property>
  </session-factory>
</hibernate-configuration>

L'activation du cache de requête ne met pas en cache chaque requête par défaut. Au lieu de cela, les requêtes devant être mises en cache doivent être définies comme pouvant être mises en cache dans le code. Pour définir une requête pouvant être mise en cache, appelez la fonction setCacheable(true) de la requête lors de la création de la requête. Le code ci-dessous est un exemple montrant une requête pouvant être mise en cache :

List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list(); 

Avantages de l'utilisation NCache comme cache de second niveau pour Hibernate

Voici les principales raisons pour lesquelles NCache est une option appropriée à utiliser comme cache de second niveau pour Hibernate lorsque l'application s'exécute dans un environnement multi-serveurs.

  • Évolutivité linéaire : Votre candidature peut être mis à l'échelle linéairement avec NCache grâce à l'ajout de plusieurs serveurs de cache. Ce faisant, non seulement vous augmentez votre capacité de stockage, mais vous augmentez également la vitesse de vos transactions.
  • Cache flexible : NCache est un cache très flexible, ce qui signifie qu'il fournit à ses utilisateurs un riche ensemble de topologies de mise en cache telles que la topologie miroir, la topologie répliquée, la topologie de partition et la partition de la topologie de réplique. Chaque topologie répond à un scénario et à un besoin spécifiques, ce qui la rend flexible.
  • Synchronisation de la base de données : Vous avez la possibilité de synchroniser votre cache avec la base de données tels que SQL Server, Oracle, etc. Ce faisant, le cache vérifie la base de données pour tout changement et supprime ou conserve les éléments dans le cache en fonction de ce changement. Cela garantit que votre cache contient des éléments qui sont toujours à jour.
  • Opérations asynchrones : Opérations asynchrones sont disponibles dans NCache. Ces opérations vous permettent de travailler sur votre application sans attendre que le cache soit mis à jour, rendant ainsi tout rapide. Ces opérations peuvent être activées avec Hibernate.

Que faire ensuite?

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.