Hibernate ist eine objektrelationale Mapping-Bibliothek für die Java-Sprache. Es ermöglicht Ihnen die Zuordnung von Java-Klassen zu Datenbanktabellen und verkürzt den gesamten Entwicklungszyklus. Aufgrund der Vorteile, die Hibernate bietet, werden immer mehr hochtransaktionale Anwendungen mit Hibernate entwickelt. Hier ist ein Beispiel für Hibernate in einer Java-Anwendung.
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(); } |
Allerdings stoßen diese Hibernate-Anwendungen mit hohem Datenverkehr auf ein großes Skalierbarkeitsproblem. Obwohl sie auf Anwendungsebene skalieren können, ist ihre Datenbank oder ihr Datenspeicher nicht in der Lage, mit der wachsenden Anzahl an Transaktionslasten zu skalieren.
Java Distributed Caching ist die beste Technik zur Lösung dieses Problems, da es die teuren Fahrten zur Datenbank reduziert, die zu Skalierbarkeitsengpässen führen. Aus diesem Grund stellt Hibernate eine Caching-Infrastruktur bereit, die First-Level- und Second-Level-Cache umfasst.
Der Hibernate-Cache der ersten Ebene bietet Ihnen einen grundlegenden eigenständigen (In-Proc-)Cache, der mit dem verknüpft ist Session Objekt und ist nur auf die aktuelle Sitzung beschränkt. Das Problem mit dem First-Level-Cache von Hibernate besteht jedoch darin, dass er die gemeinsame Nutzung von Objekten zwischen verschiedenen Sitzungen nicht zulässt. Wenn dasselbe Objekt von verschiedenen Sitzungen benötigt wird, laden alle die Datenbank, um es zu laden, was letztendlich den Datenbankverkehr erhöht und zu Skalierbarkeitsproblemen führt. Darüber hinaus gehen beim Schließen der Sitzung auch alle Cache-Daten verloren und müssen beim nächsten Mal erneut aus der Datenbank abgerufen werden.
Diese Hibernate-Anwendungen mit hohem Datenverkehr und nur der ersten Ebene sind bei der Bereitstellung in der Webfarm auch mit Problemen bei der serverübergreifenden Cache-Synchronisierung konfrontiert. In einer Webfarm führt jeder Knoten einen Webserver – Apache, Oracle WebLogic usw. – mit mehreren Instanzen von aus httpd Prozess zum Servern der Anfragen. Und jeweils ein Cache der ersten Ebene im Ruhezustand httpd Der Worker-Prozess verfügt über eine andere Version derselben Daten, die direkt aus der Datenbank zwischengespeichert wird.
Aus diesem Grund stellt Ihnen Hibernate einen Second-Level-Cache mit Provider-Modell zur Verfügung. Cache der zweiten Ebene in den Ruhezustand versetzen ermöglicht Ihnen das Plug-in 3rd Parteiverteilter (Out-Proc) Caching-Anbieter zum Zwischenspeichern von Objekten über Sitzungen und Server hinweg. Hibernate-Cache der zweiten Ebene ist zugeordnet Sitzungsfabrik Objekt und steht der gesamten Anwendung statt einer einzelnen Sitzung zur Verfügung.
Wenn Sie den Hibernate-Cache der zweiten Ebene aktivieren, stehen Ihnen am Ende zwei Caches zur Verfügung. Einer ist der Cache der ersten Ebene und der andere ist der Cache der zweiten Ebene. Hibernate versucht immer, die Objekte aus dem Cache der ersten Ebene abzurufen, wenn der Versuch, sie aus dem Cache der zweiten Ebene abzurufen, fehlschlägt. Schlägt auch dies fehl, werden Objekte direkt aus der Datenbank geladen und ebenfalls zwischengespeichert. Diese Konfiguration reduziert den Datenbankverkehr erheblich, da die meisten Daten von der zweiten Ebene bereitgestellt werden verteilter Cache.
NCache Java hat durch Erweiterung einen Hibernate-Caching-Anbieter der zweiten Ebene implementiert org.hibernate.cache.CacheProvider. Sie können es einfach anschließen NCache Java Hibernate-Anbieter für verteiltes Caching mit Ihrer Hibernate-Anwendung ohne Codeänderungen. NCache ermöglicht es Ihnen, Ihre Hibernate-Anwendung auf Konfigurationen mit mehreren Servern zu skalieren, ohne dass die Datenbank zum Engpass wird. NCache Bietet Ihnen außerdem alle verteilten Caching-Funktionen auf Unternehmensebene wie Datengrößenverwaltung, Datensynchronisierung zwischen Server und Datenbank usw.
Sie können einstecken NCache Java Hibernate-Caching-Anbieter durch einfaches Ändern Ihrer hibernate.cfg.xml und ncache.xml wie folgt
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> |
Daher durch die Verwendung NCache Mit dem verteilten Cache-Anbieter Java Hibernate können Sie Ihre Hibernate-Anwendungen ohne Codeänderungen linear skalieren.
Laden Sie also eine voll funktionsfähige 60-Tage-Testversion von herunter NCache Enterprise und probiere es selbst aus.
Ich möchte Ihnen nur sagen, dass ich gerade ein Blog-Anfänger bin und Ihre Website absolut genossen habe. Höchstwahrscheinlich habe ich vor, Ihren Blog mit einem Lesezeichen zu versehen. Du kommst wirklich mit tollen Geschichten.
Angesichts der Fülle an Informationen hält diese Art von Artikeln das Interesse der Benutzer an der Website aufrecht und sorgt dafür, dass sie immer mehr teilen.
Java-Schulung in Chennai
nützlicher Blog … Danke fürs Teilen