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.
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 :
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>
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>
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>
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();
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.