Hibernate ist eine beliebte objektrelationale Open-Source-Mapping-Lösung für Java. Zwecks Leistungssteigerung bietet Hibernate auch die Funktion des Cachings. Hibernate bietet zwei Arten von Caching, First Level Cache und Second Level Cache.
Der First-Level-Cache ist integriert und wird standardmäßig verwendet, ist jedoch in der Verwendung eingeschränkt, nicht zugänglich und nur ein In-Process-Cache. Der Second-Level-Cache bietet eine austauschbare Architektur, was bedeutet, dass ein Cache eines Drittanbieters als Second-Level-Cache für Hibernate verwendet werden kann.
NCache bietet Hibernate Second Level Cache-Anbieter, der ohne Änderungen am Code konfiguriert werden kann. Auf diese Weise erhalten Sie Zugriff auf die zahlreichen verteilten Caching-Funktionen, die von bereitgestellt werden NCache.
Einrichten NCache da der Second Level Cache für Hibernate recht einfach ist. Es sind keine Änderungen am eigentlichen Code erforderlich. Lediglich die Konfigurationsdateien müssen bearbeitet werden.
Nun zum Hinzufügen NCache als Second Level Cache für Hibernate muss die hibernate.cfg.xml wie folgt bearbeitet werden:
Hier ist ein Beispiel für die Änderungen, die in der vorgenommen wurden hibernate.cfg.xml Datei:
<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 nutzt Cache-Regionen zum Aufbewahren von Gegenständen. NCache ermöglicht die Konfiguration dieser Cache-Regionen mit unterschiedlichen Eigenschaften. Das NCacheZu diesem Zweck wird die Datei Hibernate.xml verwendet. Diese Datei enthält alle Konfigurationseinstellungen und Optionen für Regionen und zugehörige Konfigurationen, die von verwendet werden NCache.
Nachfolgend ein Beispiel NCacheHibernate.xml-Konfigurationsdatei, in der Regionen konfiguriert werden:
<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 ist ein vielseitiger, effizienter und effektiver verteilter Cache für .NET Framework, .NET Core, und Java. Es kommt mit einer breiten Palette von Features und Funktionalitäten. Eine dieser Funktionen ist die Datenbanksynchronisierung durch SQL-Abhängigkeit. Hier überprüft der Cache die Datenbank auf Änderungen und lädt oder entfernt die Elemente, die veraltet oder redundant sind.
Sie haben die Möglichkeit zu konfigurieren NCache als Second-Level-Cache-Anbieter für Hibernate, um die Datenbanksynchronisierungsfunktion zu verwenden. Sie müssen die folgenden Änderungen auf die anwenden NCacheRuhezustand.xml Datei:
<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 bietet eine Funktion von Abfrage-Caching. Hier werden die Ergebnisse der Abfragen im Second Level Cache zwischengespeichert. NCache ermöglicht es Ihnen, solche Abfragen mit dieser Funktion zwischenzuspeichern. Diese Funktion kann durch Bearbeiten der aktiviert werden hibernate.cfg.xml Datei folgendermaßen:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
Durch das Aktivieren des Abfrage-Cache wird standardmäßig nicht jede Abfrage zwischengespeichert. Stattdessen müssen Abfragen, die zwischengespeichert werden müssen, im Code zwischengespeichert werden. Um eine Abfrage cachefähig zu machen, rufen Sie beim Erstellen der Abfrage die Funktion setCacheable(true) der Abfrage auf. Der folgende Code ist ein Beispiel für eine zwischenspeicherbare Abfrage:
List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list();
Im Folgenden sind die Hauptgründe dafür aufgeführt NCache ist eine geeignete Option, um als Second Level Cache für Hibernate verwendet zu werden, wenn die Anwendung in einer Umgebung mit mehreren Servern ausgeführt wird.