Heim  >  Artikel  >  php教程  >  Der Unterschied zwischen Mybatis und Ibatis

Der Unterschied zwischen Mybatis und Ibatis

高洛峰
高洛峰Original
2017-01-05 17:18:232177Durchsuche

Der Unterschied zwischen Mybatis und Ibatis:
1. Mybatis implementiert die Schnittstellenbindung, was bequemer zu verwenden ist.
In ibatis2.x müssen wir angeben, welche XML-Zuordnungsdatei der spezifischen XML-Zuordnungsdatei entspricht in der DAO-Implementierungsklasse.
Mybatis implementiert die Bindung der DAO-Schnittstelle und der XML-Zuordnungsdatei und generiert automatisch die spezifische Implementierung der Schnittstelle für uns, wodurch sie problemloser und benutzerfreundlicher wird.
Dies kann als die wichtigste Verbesserung von Mybatis bezeichnet werden.

Hinweis:
Obwohl Mybatis die Verwendung der Annotationskonfiguration direkt in der Schnittstelle unterstützt, um die Konfiguration zu vereinfachen,
wird dringend empfohlen, weiterhin die XML-Konfiguration zu verwenden. Schließlich verfügt die Annotationskonfigurationsmethode nur über begrenzte Funktionen und der Code ist zu aufdringlich. Nur durch die Verwendung der XML-Konfigurationsmethode können die Vorteile von Mybatis zum Ausdruck gebracht werden

2. Verbesserung der objektrelationalen Zuordnung und höhere Effizienz
Ich glaube, dass viele Freunde, die ibatis2.x verwenden, es nicht implementiert haben XML-Zuordnungsdatei von ibatis Beziehungszuordnung zwischen Objekten. Tatsächlich ist dies nicht erforderlich, da ibatis2.x die Methode „verschachtelte Abfrage“ verwendet, um die Beziehung zwischen Objekten durch direkte Zusammenstellung von Abfrageanweisungen zu realisieren. Der Effekt ist derselbe wie bei der Kapselung in DAO oder Service.
Diese Methode weist jedoch das „N+1-Abfrageproblem“ auf.
Kurz gesagt kann das N+1-Abfrageproblem verursacht werden durch:
? Sie führen eine einzelne SQL-Anweisung aus, um die Ergebnisliste zu erhalten (d. h. +1).
? Für jeden zurückgegebenen Datensatz führen Sie eine Abfrage aus, um die Details für jeden zu laden (das ist N).
Dieses Problem führt dazu, dass Hunderte oder Tausende von SQL-Anweisungen ausgeführt werden. Dies ist in der Regel nicht zu erwarten.

In Mybatis ist das dto-Objekt nicht nur mit der Methode „verschachtelte Abfrage“ in ibatis2 kompatibel, sondern wird auch automatisch in das erforderliche Objekt gekapselt.
Spezifische Implementierungsmethoden finden Sie im offiziellen Mybatis-Benutzerhandbuch, das hier nicht beschrieben wird.

Tatsächlich sind die Vorteile dieser Verbesserung jedoch auch sehr begrenzt. Weil diese Methode bei Verwendung von Paging nicht funktioniert oder die Ergebnismenge verschachtelter Objekte kein Paging zulässt. Dieser Punkt wurde im Mybatis-Framework deutlich eingeschränkt (Zeile 34 in org.apache.ibatis.executor.resultset.NestedResultSetHandler), und es gibt viele Fälle, in denen Paging in tatsächlichen Projekten erforderlich ist ...
Denken Sie sorgfältig darüber nach. Zwar kann die Eins-zu-Viele-Zuordnung nicht durch die Konfigurationsdatei geblättert werden, da die Anzahl der zu diesem Zeitpunkt abgefragten Datensätze nicht mit der Größe des tatsächlich zurückgegebenen Objekts übereinstimmt, es ist jedoch nicht klar, warum die Eins-zu-Eins-Zuordnung erfolgt Zuordnung ist nicht zulässig. Vielleicht liegt es daran, dass Eins-zu-Eins ein Sonderfall von Eins-zu-Viele ist und beim Entwurf des Frameworks dieser Sonderfall nicht berücksichtigt wurde oder schwierig zu handhaben ist.

3. MyBatis verwendet leistungsstarke OGNL-basierte Ausdrücke, um andere Elemente zu eliminieren.
Personen, die mit struts2 vertraut sind, sollten mit OGNL-Ausdrücken vertraut sein, um die Konfiguration zu vereinfachen. Die Komplexität der Datei ist einfacher zu verwenden.

Was Sie vielleicht mehr beunruhigt, ist, dass

Mybatis die Schnittstellenbindung implementiert, was bequemer zu verwenden ist.
iBatis/MyBatis 3 bietet eine neue Funktion: Anmerkungen.


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


Stellungnahme:
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