Wie funktioniert der Second-Level-Cache von Hibernate?
Caching trägt dazu bei, Datenbanknetzwerkaufrufe beim Ausführen von Abfragen zu reduzieren.
Cache und Sitzungsverknüpfung der Stufe 1. Es wird implizit implementiert. Cache der Ebene 1 ist vorhanden bis das Sitzungsobjekt existiert. Sobald das Sitzungsobjekt beendet/geschlossen ist, wird dies der Fall sein Es sind keine zwischengespeicherten Objekte vorhanden. Der Cache der zweiten Ebene funktioniert für mehrere Sitzungsobjekte. es ist verlinkt mit Session Factory. Cache-Objekte der zweiten Ebene stehen allen Sitzungen zur Verfügung Einzelsitzungsfabrik. Diese zwischengespeicherten Objekte werden beendet, wenn eine bestimmte Sitzung stattfindet Die Fabrik ist geschlossen.
L2-Cache implementieren
Wir müssen die folgenden Abhängigkeiten hinzufügen, um den Cache der zweiten Ebene zu verwenden.
<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>5.4.32.Final</version> </dependency>
Hinweis – Die Hibernate-Ehcache-Versionsnummer muss mit der Hibernate-Versionsnummer identisch sein.
Jetzt müssen wir die Hibernate-Konfigurationsdatei hinzufügen, mit der Hibernate eine Verbindung herstellen kann Bereitgestellte Datenbank und Verwendung des Second-Level-Cache.
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- JDBC Database connection settings --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/demo?useSSL=false</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool settings ... using built-in test pool --> <property name="connection.pool_size">4</property> <!-- Echo the SQL to stdout --> <property name="show_sql">true</property> //caching properties <property name="cache.use_second_level_cache">true</property> <property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> <!-- Select our SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create-drop</property> <!-- name of annotated entity class --> <mapping class="academy.company.Parent"/> </session-factory> </hibernate-configuration>
Beispiel
Standardmäßig werden nicht alle Entitäten in Java zwischengespeichert. Um das Zwischenspeichern von Entitäten zu ermöglichen, verwenden wir die Annotationen @Cacheable und @Cache in der Entitätsklasse Parent -
import org.hibernate.annotations.CacheConcurrencyStrategy; import javax.persistence.*; @Entity @Table( name = " Employee") @Cacheable @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_ONLY) public class Parent { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Column(name = "first_name") String firstName; @Column(name = "last_name") String lastName; } Now, let’s check whether second level cache works: import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Main { public static void main(String[] args) { SessionFactory sessionFactory = new Configuration() .configure("academy/company/hibernate.cfg.xml") .buildSessionFactory(); Session session1 = sessionFactory.openSession(); Parent parent1 = session1.get(Parent.class, 4); System.out.println(parent1.id + " " + parent1.firstName + " " + parent1.lastName); session1.close(); Session session2 = sessionFactory.openSession(); Parent parent2 = session2.get(Parent.class, 4); System.out.println(parent2.id + " " + parent2.firstName + " " + parent2.lastName); session2.close(); } }
Ausgabe
Hibernate: select parent0.id as id1, parent0.first_name as first_name1, parent0.last_name as last_name1 from Parent parent0 where parent0.id=? 1 Subash Chopra 1 Subash Chopra
Von der Konsole aus können wir deutlich erkennen, dass Hibernate während Sitzung1 nur eine Abfrage ausgeführt hat. Wenn nun Sitzung2 auf dieselbe Abfrage zugreift, erfolgt kein Netzwerkaufruf an die Datenbank, um sie auszuführen. Da wir stattdessen den Cache der zweiten Ebene verwenden, wird das Cache-Objekt von Sitzung1 abgerufen.
Das obige ist der detaillierte Inhalt vonWie funktioniert der Second-Level-Cache von Hibernate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der Cache der ersten Ebene von mybatis ist standardmäßig aktiviert und befindet sich auf der SqlSession-Ebene. Dies bedeutet, dass mehrere Abfragen in derselben SqlSession diese Caching-Ebene nutzen. Der Cache der ersten Ebene speichert hauptsächlich Abfrageergebnisse. Beim Ausführen einer Abfrageoperation speichert MyBatis die Zuordnungsbeziehung zwischen der Zuordnungsanweisung und dem Abfrageergebnis sowie die Abfrageergebnisdaten im Cache. Der Cache der zweiten Ebene von mybatis unterscheidet sich vom Cache der ersten Ebene. Der Cache der zweiten Ebene wird in der gesamten Anwendung gemeinsam genutzt, im Gegensatz zum Cache der ersten Ebene in jeder SqlSession usw.

Analyse des MyBatis-Caching-Mechanismus: Der Unterschied und die Anwendung von First-Level-Cache und Second-Level-Cache Im MyBatis-Framework ist Caching eine sehr wichtige Funktion, die die Leistung von Datenbankoperationen effektiv verbessern kann. Unter diesen sind der First-Level-Cache und der Second-Level-Cache zwei häufig verwendete Caching-Mechanismen in MyBatis. In diesem Artikel werden die Unterschiede und Anwendungen von First-Level-Cache und Second-Level-Cache im Detail analysiert und spezifische Codebeispiele zur Veranschaulichung bereitgestellt. 1. Level-1-Cache Der Level-1-Cache wird auch als lokaler Cache bezeichnet. Er ist standardmäßig aktiviert und kann nicht deaktiviert werden. Der Cache der ersten Ebene ist SqlSes

Hibernate in das SpringBoot-Projekt integrieren Vorwort Hibernate ist ein beliebtes ORM-Framework (Object Relational Mapping), das Java-Objekte Datenbanktabellen zuordnen kann, um Persistenzvorgänge zu erleichtern. Im SpringBoot-Projekt kann uns die Integration von Hibernate dabei helfen, Datenbankoperationen einfacher durchzuführen. In diesem Artikel wird die Integration von Hibernate in das SpringBoot-Projekt vorgestellt und entsprechende Beispiele bereitgestellt. 1.Abhängigkeiten einführenFügen Sie die folgenden Abhängigkeiten in die Datei pom.xml ein: org.springframework.bootspring-boot-starter-data-jpam

Java ist eine objektorientierte Programmiersprache, die im Bereich der Softwareentwicklung weit verbreitet ist. Hibernate ist ein beliebtes Java-Persistenz-Framework, das eine einfache und effiziente Möglichkeit bietet, die Persistenz von Java-Objekten zu verwalten. Während des Entwicklungsprozesses treten jedoch häufig Hibernate-Fehler auf, die dazu führen können, dass das Programm abnormal beendet wird oder instabil wird. Der Umgang mit und die Vermeidung von Hibernate-Fehlern ist zu einer Fähigkeit geworden, die Java-Entwickler beherrschen müssen. In diesem Artikel werden einige gängige Hib vorgestellt

Wenn wir über Programmiersprachen und Berufe sprechen, fällt uns vor allem Java ein. Die meisten Unternehmen auf der ganzen Welt verwenden Java. Es ist beliebt und es gibt viele Jobmöglichkeiten. Wenn Sie mit Hilfe von Java-Kenntnissen im Jahr 2023 einen Job bekommen möchten, dann ist das gut für Sie, denn Java-Kenntnisse können Ihnen schnell einen Job verschaffen. Außerdem kann es Ihre Karriere schnell voranbringen. Es gibt keinen Zaubertrick, mit dem Sie schnell einen Job finden. Aber deine Fähigkeiten sind für dich wie Magie. Wählen Sie einen Job, der Sie zufriedenstellt, und ein gutes Umfeld, das Ihre Karriere erheblich bereichern kann. Wenn Sie ein Neuling sind und Erfahrung haben, bietet Ihnen Java ebenfalls einen guten Job. Viele Unternehmen nutzen Java als Hauptprogramm für ihre Entwicklung. Es

Analyse der Verantwortlichkeiten des Front-End-Ingenieurs: Was ist die Hauptaufgabe? Angesichts der rasanten Entwicklung des Internets spielen Front-End-Ingenieure eine sehr wichtige berufliche Rolle und spielen eine wichtige Rolle als Brücke zwischen Benutzern und Website-Anwendungen. Was machen Front-End-Ingenieure also hauptsächlich? In diesem Artikel werden die Verantwortlichkeiten von Front-End-Ingenieuren analysiert. Lassen Sie uns das herausfinden. 1. Grundlegende Verantwortlichkeiten von Front-End-Ingenieuren Website-Entwicklung und -Wartung: Front-End-Ingenieure sind für die Front-End-Entwicklung der Website verantwortlich, einschließlich des Schreibens von HTML, CSS und JavaScr der Website

Hibernate ist ein hervorragendes ORM-Framework, das den Datenzugriff zwischen Java-Anwendungen und relationalen Datenbanken vereinfacht. In Hibernate können wir Eins-zu-Viele- und Viele-zu-Viele-Beziehungen verwenden, um komplexe Datenmodelle zu verarbeiten. Die Eins-zu-Viele-Beziehung von Hibernate In Hibernate bedeutet eine Eins-zu-Viele-Beziehung, dass eine Entitätsklasse mehreren anderen Entitätsklassen entspricht. Beispielsweise kann eine Bestellung mehreren Bestellpositionen (OrderItem) entsprechen, und ein Benutzer (User) kann mehreren Bestellungen (Order) entsprechen. Um eine Eins-zu-Viele-Beziehung in Hibernate zu implementieren, müssen Sie in der zu speichernden Entitätsklasse ein Sammlungsattribut definieren

Die Unterschiede zwischen Hibernate und Mybatis: 1. Implementierungsmethode; 3. Vergleich der Objektverwaltung; Detaillierte Einführung: 1. Implementierungsmethode: Hibernate ist eine vollständige Objekt-/Relational-Mapping-Lösung, die Objekte Datenbanktabellen zuordnet, während MyBatis von Entwicklern das manuelle Schreiben von SQL-Anweisungen und ResultMap erfordert. 2. Leistung: Hibernate ist in Bezug auf die Entwicklungsgeschwindigkeit schneller MyBatis, weil Hibernate die DAO-Ebene usw. vereinfacht.
