Heim > php教程 > PHP开发 > Der Unterschied zwischen Mybatis und Hibernate

Der Unterschied zwischen Mybatis und Hibernate

高洛峰
Freigeben: 2017-01-05 17:23:56
Original
1430 Leute haben es durchsucht

Ich habe mybatis bisher nicht oft verwendet. Ich weiß nur, dass es sich um ein ORM-Datenbank-Framework wie Hibernate handelt. Mit zunehmender Kompetenz in der Verwendung stelle ich fest, dass es sich stark vom Ruhezustand unterscheidet. Interessierte Freunde sollten diesen Artikel gemeinsam lernen.

Ich werde mir dieses Wochenende die Zeit nehmen, einige häufig verwendete Technologien zu klären . Der Herausgeber wird auch gelegentlich Inhalte aktualisieren.

Stellen Sie zunächst kurz die Konzepte der beiden vor:

Hibernate: Hibernate ist derzeit das beliebteste ORM-Framework und bietet eine relativ vollständige Kapselung der Datenbankstruktur.

Mybatis: Mybatis ist ebenfalls ein sehr beliebtes ORM-Framework. Der Schwerpunkt liegt auf der Zuordnungsbeziehung zwischen POJO und SQL.

Zweitens sprechen wir über die Unterschiede zwischen den beiden in mehreren Aspekten:

1. Der größte Unterschied zwischen den beiden:

Der einfachen Logik halber haben Hibernate und MyBatis entsprechende Übereinstimmungen Codegenerierungstool, das einfache und grundlegende DAO-Layer-Methoden generieren kann.

Für erweiterte Abfragen erfordert Mybatis das manuelle Schreiben von SQL-Anweisungen und ResultMap. Hibernate verfügt über einen guten Zuordnungsmechanismus. Entwickler müssen sich nicht um die SQL-Generierung und Ergebniszuordnung kümmern und können sich mehr auf Geschäftsprozesse konzentrieren.

2. Vergleich der Entwicklungsschwierigkeiten

Hibernate ist schwieriger zu entwickeln als Mybatis. Hauptsächlich, weil Hibernate komplex und umfangreich ist und der Lernzyklus lang ist.

Mybatis ist relativ einfach und Mybatis basiert hauptsächlich auf SQL-Schreiben, wodurch sich Entwickler vertrauter fühlen.

3.sql-Schreibvergleich

Mybatis SQL wird manuell geschrieben, sodass Sie die Abfragefelder nach Bedarf angeben können. Es verfügt jedoch nicht über eigene Protokollstatistiken und muss daher log4j zum Aufzeichnen von Protokollen verwenden.

Hibernate kann auch sein eigenes SQL schreiben, um die Felder anzugeben, die abgefragt werden müssen, aber das zerstört die Einfachheit der Hibernate-Entwicklung. Allerdings verfügt Hibernate über eigene Protokollstatistiken.

4. Vergleich der Datenbankskalierbarkeit

Mybatis weist eine schlechte Skalierbarkeit und Portabilität auf, da das gesamte SQL in einer Datenbank geschrieben ist.

Die spezifische Beziehung zwischen Hibernate und der Datenbank erfolgt in XML, daher ist HQL nicht sehr besorgt über die spezifische verwendete Datenbank.

5. Vergleich der Caching-Mechanismen

Gleiche Punkte: Zusätzlich zur Verwendung des System-Standard-Caching-Mechanismus können der Second-Level-Cache von Hibernate und Mybatis sowohl Ihren eigenen Cache als auch den Cache für andere implementieren Erstellen Sie in einem Drittanbieter-Szenario einen Adapter, um das Caching-Verhalten vollständig außer Kraft zu setzen.

Unterschied: Die Cache-Konfiguration der zweiten Ebene von Hibernate wird detailliert in der von SessionFactory generierten Konfigurationsdatei konfiguriert, und dann wird der Cache-Typ in der spezifischen Tabellen-Objekt-Zuordnung konfiguriert.

Die Cache-Konfiguration der zweiten Ebene von MyBatis wird in jeder spezifischen Tabellen-Objekt-Zuordnung detailliert konfiguriert, sodass unterschiedliche Caching-Mechanismen für verschiedene Tabellen angepasst werden können. Und Mybatis kann über Cache-ref dieselbe Cache-Konfiguration und Instanz im Namespace teilen.

Vergleich zwischen den beiden: Da Hibernate über einen guten Verwaltungsmechanismus für Abfrageobjekte verfügt, müssen sich Benutzer nicht um SQL kümmern. Wenn bei der Verwendung des Second-Level-Cache fehlerhafte Daten auftreten, meldet das System daher einen Fehler und fordert Sie dazu auf.

In diesem Zusammenhang muss MyBatis bei der Verwendung des Second-Level-Cache besonders vorsichtig sein. Wenn Sie den Umfang des Datenaktualisierungsvorgangs nicht vollständig bestimmen können, vermeiden Sie die blinde Verwendung des Caches. Andernfalls birgt das Auftauchen schmutziger Daten große versteckte Gefahren für den normalen Betrieb des Systems.

6. Zusammenfassung:

mybatis: klein, praktisch, effizient, einfach, direkt, halbautomatisch
Winterschlaf: leistungsstark, praktisch, effizient, komplex, rund, vollautomatisch

Sowohl Hibernate als auch MyBatis können SessionFactoryBuider verwenden, um eine SessionFactory aus einer XML-Konfigurationsdatei zu generieren. Anschließend generiert die SessionFactory eine Sitzung und schließlich beginnt die Sitzung mit der Ausführung von Transaktionen und SQL-Anweisungen.

Der Vorteil von MyBatis besteht darin, dass MyBatis eine detailliertere SQL-Optimierung durchführen kann, Abfragefelder reduziert und einfach zu beherrschen ist.

Der Vorteil von Hibernate besteht darin, dass die Entwicklung der DAO-Ebene einfacher ist, als MyBatis für die Verwaltung von SQL und Ergebniszuordnung benötigt. Die Datenbankportabilität ist sehr gut, aber die Datenbankportabilität von MyBatis ist nicht gut. Verschiedene Datenbanken müssen unterschiedliche SQL schreiben. Es gibt einen besseren Caching-Mechanismus der zweiten Ebene und es kann Caching von Drittanbietern verwendet werden. Der von MyBatis selbst bereitgestellte Caching-Mechanismus ist schlecht.

mybatis:

1. Einfach zu starten, sofort zu erlernen und zu verwenden, bietet eine automatische Objektbindungsfunktion für Datenbankabfragen und weiterhin eine gute SQL-Nutzung für diejenigen, die nicht so fortgeschritten sind Für Projekte, die Objektmodelle erfordern, ist es ziemlich perfekt.

2. Eine detailliertere SQL-Optimierung kann durchgeführt und Abfragefelder reduziert werden.

3. Der Nachteil besteht darin, dass das Framework immer noch relativ einfach ist und die Funktionen noch fehlen. Obwohl der Datenbindungscode vereinfacht ist, muss die gesamte zugrunde liegende Datenbankabfrage immer noch selbst geschrieben werden Der Arbeitsaufwand ist relativ groß und lässt sich nicht leicht an schnelle Datenbankänderungen anpassen.

4. Schlechter sekundärer Cache-Mechanismus.

Hibernate:

1. Leistungsstarke, datenbankunabhängige und O/R-Zuordnungsfunktionen. Wenn Sie Hibernate recht gut beherrschen und den gesamten Persistenzschichtcode von Das Projekt wird recht einfach sein, es muss nur sehr wenig Code geschrieben werden, und die Entwicklungsgeschwindigkeit wird sehr hoch sein, was sehr viel Spaß macht.

2. Es gibt einen besseren Second-Level-Cache-Mechanismus und es kann ein Drittanbieter-Cache verwendet werden.

3. Der Nachteil besteht darin, dass die Schwelle zum Lernen nicht niedrig und die Schwelle zur Beherrschung noch höher ist. Darüber hinaus geht es darum, wie man ein O/R-Mapping gestaltet und wie man ein Gleichgewicht zwischen Leistung und Objektmodell herstellt Um Hibernate gut nutzen zu können, sind Erfahrung und Fähigkeiten erforderlich. Sie müssen sehr stark sein.
Um eine anschauliche Metapher zu geben:

mybatis: Mechanische Werkzeuge sind einfach zu bedienen und können verwendet werden, sobald Sie sie mitbringen. Allerdings müssen Sie die Arbeit immer noch selbst erledigen, aber die Werkzeuge sind lebendig und es liegt an mir zu entscheiden, wie ich sie verwende.

Hibernate: ein intelligenter Roboter, aber die Kosten für seine Entwicklung (Lernen, Kompetenz) sind sehr hoch, und die Arbeit kann von ihm befreit werden, aber er ist auf das beschränkt, was er kann.


Weitere Artikel zum Unterschied zwischen Mybatis und Hibernate finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage