Ich habe MyBatis noch nicht viel verwendet, ich weiß nur, dass es sich um ein Orm -Datenbank -Framework wie Hibernate handelt. Mit zunehmender Verwendung der Nutzung stellte ich fest, dass es sich sehr vom Winterschlaf unterscheidet. Interessierte Freunde können es durch diesen Artikel lernen.
Ich nutzte dieses Wochenende und nahm mir die Zeit, um einige häufig verwendete Technologien auszuräumen, und der Editor wird den Inhalt von Zeit zu Zeit aktualisieren.
Lassen Sie uns zunächst kurz die Konzepte der beiden vorstellen:
Hibernate: Hibernate ist derzeit das beliebteste ORM -Framework und bietet eine relativ vollständige Verkapselung der Datenbankstruktur.
MyBatis: MyBatis ist auch ein sehr beliebtes Orm -Framework, wobei der Schwerpunkt auf der Zuordnungsbeziehung zwischen Pojo und SQL liegt.
Zweitens sprechen wir über die Unterschiede zwischen den beiden in mehreren Aspekten:
1. Der größte Unterschied zwischen den beiden:
Für einfache Logik haben Hibernate und MyBatis entsprechende Tools für die Codegenerierung, mit denen einfache und grundlegende DAO -Schichtmethoden erzeugt werden können.
Für fortgeschrittene Abfragen erfordert MyBatis manuelles Schreiben von SQL -Anweisungen und Ergebnismaps. Hibernate hat einen guten Mapping -Mechanismus, sodass Entwickler sich nicht um die SQL -Generation und die Ergebnis Mapping kümmern und sich mehr auf Geschäftsprozesse konzentrieren können.
2. Vergleich der Entwicklungsschwierigkeiten
Die Entwicklung von Hibernate ist schwieriger als Mybatis. Hauptsächlich, weil Hibernate komplex und groß ist und einen langen Lernzyklus hat.
MyBatis ist relativ einfach, und MyBatis stützt sich hauptsächlich auf SQL -Schreiben, wodurch sich Entwickler vertrauter fühlen.
3. Vergleich des SQL -Schreibens
MyBatis 'SQL ist manuell geschrieben, sodass Sie nach Bedarf die Felder für die Abfrage angeben können. Es gibt jedoch keine eigenen Protokollstatistiken, daher müssen Sie Log4J verwenden, um Protokolle aufzuzeichnen.
Hibernate kann auch SQL selbst schreiben, um die Felder anzugeben, die abgefragt werden müssen, aber dies zerstört die Einfachheit der Winterschlafentwicklung. Hibernate hat jedoch eine eigene Protokollstatistik.
4. Vergleich der Datenbankskalierbarkeit
Da alle SQL in der Datenbank geschrieben sind, hat MyBatis eine schlechte Skalierbarkeit und Migration.
Die spezifische Beziehung zwischen Hibernate und Datenbank liegt in XML, daher ist HQL nicht sehr besorgt darüber, welche Datenbank sie verwendet.
5. Vergleich von Caching -Mechanismen
Ähnlichkeiten: Zusätzlich zur Verwendung des Standard-Caching-Mechanismus des Systems kann der Cache von Hibernate und MyBatis zweiter Stufe das Cache-Verhalten vollständig überschreiben, indem Sie Ihren eigenen Cache implementieren oder Adapter für andere Cache-Lösungen von Drittanbietern erstellen.
Unterschiede: Die Sekundärcache-Konfiguration von Hibernate wird in der von SessionFactory generierten Konfigurationsdatei detailliert konfiguriert und dann in der spezifischen Tabelle-Objekt-Karte konfiguriert, die Cache konfiguriert ist.
Die sekundäre Cache-Konfiguration von MyBatis ist in jeder spezifischen Tabellen-Objekt-Karte ausführlich konfiguriert, sodass verschiedene Cache-Mechanismen für verschiedene Tabellen angepasst werden können. Und MyBatis kann die gleiche Cache-Konfiguration und -instanz im Namespace teilen, der über Cache-Ref implementiert wird.
Vergleich der beiden: Da Hibernate einen guten Managementmechanismus für Abfrageobjekte hat, müssen sich Benutzer nicht um SQL kümmern. Wenn bei der Verwendung des sekundären Cache schmutzige Daten angezeigt werden, meldet das System daher einen Fehler und eine Aufforderung.
In dieser Hinsicht benötigt MyBatis bei der Verwendung von L2 -Cache besondere Sorgfalt. Wenn der Umfang der Datenaktualisierungsvorgänge nicht vollständig ermittelt werden kann, vermeiden Sie den blinden Gebrauch von Cache. Andernfalls bringt das Erscheinen schmutziger Daten den normalen Betrieb des Systems große versteckte Gefahren.
6. Zusammenfassung:
mybatis: klein, bequem, effizient, einfach, direkt, halbautomatisch
Hibernate: leistungsstark, bequem, effizient, komplex, vollautomatisch
Hibernate und MyBatis können sowohl SessionFactory aus der XML -Konfigurationsdatei über SessionFactoryBuder generieren, anschließend eine Sitzung aus SessionFactory generieren und schließlich Transaktionen und SQL -Anweisungen ausführen.
Der Vorteil von MyBatis besteht darin, dass MyBatis eine detailliertere SQL -Optimierung durchführen, Abfragefelder reduzieren und leicht zu beherrschen ist.
Der Vorteil von Hibernate besteht darin, dass die DAO -Schichtentwicklung einfacher ist als MyBatis, was die Aufrechterhaltung von SQL und Ergebniszuordnung erfordert. Die Datenbankportabilität ist sehr gut, die Portabilität der MyBatis -Datenbank ist nicht gut und verschiedene Datenbanken müssen verschiedene SQL schreiben. Es gibt einen besseren Caching-Mechanismus auf Level 2, und es kann ein Caching von Drittanbietern verwendet werden. MyBatis selbst bietet einen schlechten Caching -Mechanismus.
mybatis:
1. Es ist einfach, zu starten, zu lernen und zu verwenden und automatische Objektbindungsfunktionen für Datenbankabfragen zu erhalten, und setzt eine gute Erfahrung in der SQL -Verwendung fort. Es ist sehr perfekt für Projekte, die keine so hohen Objektmodellanforderungen haben.
2. Eine detailliertere SQL -Optimierung kann durchgeführt werden, die Abfragefelder reduzieren kann.
3. Der Nachteil ist, dass das Framework noch relativ einfach ist und die Funktionen noch fehlen. Obwohl der Datenbindungscode vereinfacht ist, muss die gesamte zugrunde liegende Datenbankabfrage tatsächlich selbst verfasst werden, die Workload ist relativ groß und es ist nicht einfach, sich an die Änderung der schnellen Datenbank anzupassen.
4. Der sekundäre Caching -Mechanismus ist schlecht.
überwintern:
1. leistungsstarke Funktionen, gute Datenbank -Irrelevanz und starke O/R -Kartierungsfunktionen. Wenn Sie einen Hibernate und einen ordnungsgemäß eingekapselten Winterschlaf in Hibernate sind, ist der gesamte Code für Persistenzschicht Ihres Projekts recht einfach, es gibt nur sehr wenig Code zum Schreiben, die Entwicklungsgeschwindigkeit ist sehr schnell und es ist sehr cool.
2. Es gibt einen besseren sekundären Caching-Mechanismus, und es kann ein Drittanbieter-Caching verwendet werden.
3. Der Nachteil ist, dass die Lernschwelle nicht niedrig ist und dass Sie es beherrschen müssen. So entwerfen Sie O/R -Mapping, wie Sie das Leistungs- und Objektmodell ausgleichen und wie Sie Hibernate gut verwenden, erfordert Ihre Erfahrung und Fähigkeit, stark zu sein.
Lassen Sie mich Ihnen eine lebendige Metapher geben:
MyBatis: Mechanische Werkzeuge sind einfach zu bedienen und können so bald wie möglich verwendet werden, aber die Arbeit muss noch von Ihnen selbst erledigt werden, aber die Werkzeuge sind lebendig. Wie sie sie herstellen, hängt also von mir ab.
Hibernate: Intelligenter Roboter, aber es ist sehr teuer, ihn zu entwickeln (Lernen, Kenntnisse) und Arbeit können es loswerden, aber nur das, was es kann.