Der Ruhezustand ist ein ORM, dh (auf seiner grundlegendsten Ebene) werden Instanzen von Java-Objekten tatsächlichen Zeilen in einer Datenbanktabelle zugeordnet. Im Allgemeinen gilt für Pojos, die über den Ruhezustand abgerufen wurden: Alle Manipulationen und Änderungen an diesen Pojos werden in der Datenbank angezeigt. Der Ruhezustand generiert und führt die entsprechende SQL zu einem geeigneten Zeitpunkt aus.
Mybatis (im Grunde genommen) ist einfach ein Tool zum Zusammensetzen und Ausführen von SQL, das in XML-Dateien gespeichert ist. Es ordnet keine Instanzen von Java-Objekten Zeilen in einer Datenbanktabelle zu, sondern ordnet Java-Methoden SQL-Anweisungen zu und ist daher kein ORM. Es kann natürlich auch Pojos zurückgeben, aber sie sind nicht an irgendeine Art von Persistenzkontext gebunden.
Beide Tools leisten viel mehr als oben beschrieben, aber eines ist ein ORM und eines nicht.
Die Kriterien, anhand derer Sie auswählen können, welches verwendet werden soll, hängen meines Erachtens entscheidend vom Datenbankmodell ab, mit dem Sie arbeiten müssen.
Stellen Sie sich zum Beispiel ein großes Schema vor, das ein Versicherungsmodell darstellt. Entwickler müssen Daten abrufen und mit diesen Daten auf eine Weise interagieren, die dem jeweiligen Unternehmen entspricht.
Entwickler kommen und gehen, und es wird nie erwartet, dass sie über die erforderlichen Geschäftskenntnisse verfügen, um die gesamte
SQL von Hand zu schreiben (was Mybatis erfordern würde). Der Ruhezustand würde zu einem solchen Szenario passen.
Geschäftsanalysten definieren das Datenmodell, die Entitäten, die Beziehungen und die Interaktionen sowie deren Fachwissen. Java-Entwickler verwenden dann den Ruhezustand, um "das Modell zu durchlaufen". Die Entwickler können sehr produktiv werden, ohne dass komplizierte fehleranfällige SQL-Dateien geschrieben werden müssen, um sie in einem sehr komplizierten Schema auszuführen.
Nach meiner Erfahrung werden sowohl Hibernate als auch Mybatis regelmäßig für dasselbe Projekt verwendet.
Wo der Ruhezustand verwendet wird
- Allgemeine CRUD-Funktionalität
- 'Walking' das relationale Modell 'Domain Object'
- Sitzungsverwaltung
und wo Mybatis verwendet wird
- Ad-hoc-Anfragen
- Starten Sie gespeicherte Prozeduren (und interagieren Sie mit ihnen)
- unterstützen sehr spezifische oder komplizierte Abfragen
- Unterstützung komplizierter Suchanfragen, bei denen Suchkriterien dynamisch sind, und Auslagerung von Ergebnissen