HibernateSummary
Hibernate bietet Caching- und Snapshot-Mechanismen, um die Leistung zu verbessern.
Sein Cache ist in Cache der ersten Ebene und Cache der zweiten Ebene unterteilt.
Hibernate-Cache der ersten Ebene: Wenn eine SQL-Anweisung in einer Transaktion ausgeführt wird, werden die zurückgegebenen Ergebnisse in der Map-Sammlung in der Sitzung gespeichert (natürlich gibt es auch Snapshots).
Test: (alle folgenden Codes befinden sich in Try/Catch-Blöcken)
Configuration config=new Configuration().configure();//configure()方法是加载src/hibernate.cfg.xml配置文件 SessionFactory sf=config.buildSessionFactory(); Session s=sf.openSession();//Session是高一级的对Connection的封装 Transaction tran=null; try { tran=s.beginTransaction(); //代码在此 tran.commit(); } catch (HibernateException e) { if(tran!=null){ tran.rollback(); } e.printStackTrace(); } finally{ s.close(); sf.close(); }
Abfrage: einschließlich get(), load(), nativem SQL, HQL, Criteria (orientierter als HQL (Eine Abfragemethode für Objekte)
//1.get(),load()方法测试 User u=(User) s.get(User.class, 1);//第一次查询生成SQL语句,并将结果放入缓存 User u1=(User) s.get(User.class, 1);//第二次查询并无生成SQL语句,但结果取自缓存 p(u==u1);//true //2.HQL查询 Query q=s.createQuery("from domain.User where id=1"); User u2=(User) q.uniqueResult();//第三次查询生成了SQL语句,但结果取自缓存 p(u2==u);//true //3.原生Sql SQLQuery q1=s.createSQLQuery("select * from User where id=1"); q1.addEntity(User.class); User u3=(User) q1.uniqueResult();//第四次查询生成了SQL语句,但结果取自缓存 p(u3==u);//true //4.Criteria查询 Criteria c=s.createCriteria(User.class); c.add(Restrictions.eq("id", 1)); User u4=(User) q1.uniqueResult();//第五次查询生成了SQL语句,但结果取自缓存 p(u4==u);//true
Zusammenfassende Abfrage:
Hinzugefügt: save(), persist()
User user = new User();//对象的瞬态 user.setName("xiaobai"); user.setAge(121); s.save(user);//对象的持久态 s.persist(user);
Der Unterschied zwischen den beiden Methoden besteht darin, dass der Primärschlüssel vor der Ausführung der Methode festgelegt wird und der Primärschlüssel nach der Ausführung der Methode zurückgegeben wird.
1, persist(), behält eine transiente Instanz bei, „garantiert“ aber nicht, dass der Bezeichner (das Attribut, das dem Bezeichner-Primärschlüssel entspricht) sofort in die persistente Instanz eingefügt wird. Die Eingabe kann verzögert werden bis zur Spülzeit.
2. save() generiert rechtzeitig einen vorübergehenden Instanzidentifikator. Er gibt den Identifikator zurück, sodass die SQL-Einfügung sofort ausgeführt wird.
User u = new User(); u.setName("xiaobai"); u.setAge(121); s.save(u);//插入数据库,并将对象瞬态转为持久态,将返回对象存入缓存 User u1=(User) s.get(User.class, u.getId());//这次查询没有生成SQL语句,结果取自Session的缓存 p(u1==u);//true
Löschen: delete()
User u=(User) s.get(User.class, 10);//Abfrageoperation ausführen
s.delete(u );//Konvertieren Sie den persistenten Zustand des Objekts in einen freien Zustand
Wenn Sie der Meinung sind, dass Sie zum Löschen eines Datenelements Abfragevorgänge ausführen müssen, um die Leistung zu verringern, können Sie dies natürlich tun Tun Sie dies:
Benutzer u=new User();
u.setId(5);
s.delete(u);
Update: update( )
User u=(User) s.get(User.class, 1);
u.setName("set");
Aber manchmal tun wir es nicht Die Methode s.update(object) muss nicht ausgeführt werden. Dies beinhaltet eine Funktion des Persistenzstatus des Objekts (wird auch von [Snapshot] verwendet):
Wenn sich das Objekt im persistenten Status befindet, wenn es Wenn die Daten aktualisiert werden, vergleicht das Framework sie mit dem vorherigen Snapshot. Bei Abweichungen erfolgt keine Aktion.
//当然,也可以这么做 User u=new User();//对象的瞬态,不具备自动更新功能,需要我们手动update() u.setAge(1); u.setId(1); u.setName("1"); s.update(u);
Zusammenfassung:
Ein Punkt ist sehr wichtig: Obwohl die SQL-Anweisung in der Transaktion gebildet wird, wird die Datenbank erst nach der Transaktion.commit() tatsächlich betrieben.
Hibernate muss [Cache, Snapshot, Objekt-Drei-Status] und andere Dinge über Datenbankoperationen herausfinden.
Drei Zustände des Objekts:
* Vorübergehender Zustand: Steht nicht im Zusammenhang mit dem Ruhezustand, es gibt keine entsprechende ID in der Datenbanktabelle.
* Dauerhafter Zustand: Steht im Zusammenhang mit dem Ruhezustand ist eine in der Datenbanktabelle Entsprechende ID---OID
* Freier Zustand: nicht im Zusammenhang mit dem Ruhezustand, es gibt eine entsprechende ID

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



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

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.

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

Hibernate ist ein Open-Source-ORM-Framework, das die Datenzuordnung zwischen relationalen Datenbanken und Java-Programmen miteinander verbindet und so Entwicklern den Zugriff auf Daten in der Datenbank erleichtert. Die Verwendung des Hibernate-Frameworks kann den Aufwand beim Schreiben von SQL-Anweisungen erheblich reduzieren und die Entwicklungseffizienz und Wiederverwendbarkeit von Anwendungen verbessern. Lassen Sie uns das Hibernate-Framework unter folgenden Gesichtspunkten vorstellen. 1. Vorteile des Hibernate-Frameworks: objektrelationale Zuordnung, Ausblenden von Datenbankzugriffsdetails, Ermöglichen der Entwicklung

In diesem Artikel erfahren Sie, wie Sie Masseneinfügungen/-aktualisierungen im Ruhezustand durchführen. Wann immer wir eine SQL-Anweisung ausführen, führen wir dies durch einen Netzwerkaufruf an die Datenbank durch. Wenn wir nun 10 Einträge in die Datenbanktabelle einfügen müssen, müssen wir 10 Netzwerkaufrufe durchführen. Stattdessen können wir Netzwerkaufrufe mithilfe der Stapelverarbeitung optimieren. Durch die Stapelverarbeitung können wir eine Reihe von SQL-Anweisungen in einem einzigen Netzwerkaufruf ausführen. Um dies zu verstehen und umzusetzen, definieren wir unsere Entität: @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Caching trägt dazu bei, Datenbanknetzwerkaufrufe beim Ausführen von Abfragen zu reduzieren. Cache- und Sitzungsverknüpfung der Ebene 1. Es wird implizit implementiert. Der Cache der ersten Ebene existiert, bis das Sitzungsobjekt existiert. Sobald das Sitzungsobjekt beendet/geschlossen ist, sind keine zwischengespeicherten Objekte mehr vorhanden. Der Cache der zweiten Ebene funktioniert für mehrere Sitzungsobjekte. Es ist mit der Session Factory verknüpft. Cache-Objekte der zweiten Ebene stehen allen Sitzungen über eine einzige Sitzungsfabrik zur Verfügung. Diese Cache-Objekte werden beendet, wenn eine bestimmte Sitzungsfabrik geschlossen wird. Um den Second-Level-Cache zu implementieren, müssen wir die folgenden Abhängigkeiten hinzufügen, um den Second-Level-Cache zu verwenden. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de

Java-Framework-Technologie-Stack: Einführung häufig verwendeter Java-Frameworks wie SpringMVC, Hibernate, MyBatis usw. Mit der kontinuierlichen Entwicklung von Java wurden immer mehr Frameworks entwickelt, um den Entwicklungsprozess zu vereinfachen. Unter ihnen sind SpringMVC, Hibernate, MyBatis usw. eines der am häufigsten verwendeten Frameworks in der Java-Entwicklung. In diesem Artikel werden die grundlegenden Konzepte und die Verwendung dieser Frameworks vorgestellt, um den Lesern zu helfen, diese Frameworks besser zu verstehen und anzuwenden. Lassen Sie uns zunächst Sp vorstellen
