Welche Vorteile bietet MyBatis gegenüber der Arbeit mit JDBC?

Ich muss ziemlich direkten DB-Code schreiben und ich überlege MyBatis über JDBC (ich glaube, dass volles ORM ein Overkill ist).

Wenn man bedenkt, dass Sie sowohl in MyBatis als auch in JDBC sich selbst finden:

  1. Handschrift SQL-statementen.
  2. Manuelles Verbinden von DB-Zeilen mit JAVA DTO-objecten (entweder über Code oder Config).

Die MyBatis-Vorteile gegenüber JDBC, die ich kenne, sind:

  1. Direktes Tabellen- / Abfrage-Caching
  2. Dynamisches SQL.
  3. SQL wird außerhalb des Codes gespeichert.
  4. Templating SQL für einfachere databaseanbieter-Unabhängigkeit.

Welche anderen Vorteile von MyBatis-Over-JDBC sind zu berücksichtigen?

Solutions Collecting From Web of "Welche Vorteile bietet MyBatis gegenüber der Arbeit mit JDBC?"

Ich weiß nicht, ob Sie das als Vorteil oder nicht zählen, aber es gibt MyBatisGenerator , und es generiert alle grundlegenden benötigten Abfragen sowie einige Advanced Queries und DTO-objecte automatisch basierend auf einer einzigen XML-file.

Plus es hat Eclipse Plugin für das gleiche.

In den meisten Fällen müssen Sie Explizitspalten nicht in Pojos mappen, so dass Bullet Nummer 2 eher eine Differenz als eine Ähnlichkeit ist.

Der Hauptunterschied zu IMHO ist die API, die in MyBatis viel einfacher ist als in JDBC. Bei Verwendung mit Spring oder Guice müssen Sie die MyBatis API in Ihrem Code überhaupt nicht aufrufen.

Mapper und Injection helfen beim Testen, da Mapper einfache interfacen sind, die so einfach zu simulieren sind.

Info: 'Manuelles Verbinden von DB-Zeilen mit JAVA DTO-objecten (entweder über Code oder Config).' Dies trifft nicht völlig zu, wenn Sie Konventionen verwenden, können Sie eine automatische Zuordnung von DB-Tabellen zu Java-classn erhalten, zum Beispiel eine CUSTOMER-Tabelle mit Feldern wie ID, COMPANY_NAME, PHONE_NUMBER und eine Java-class Customer mit den properties id, companyName und phoneNumber, MyBatis ist schlau genug, um die DB nach Camel Case Convention zu gestalten und es ist kein Mapping von Ihnen erforderlich. Groß!

  • MyBatis benötigen weniger Code und sind sauberer als normale JDBC-Codierung
  • MyBatis unterstützt benannte Parameter, JDBC unterstützt nur Platzhalter? (ugg!)
  • Mit einer einzigen Zeile können Sie vom Modus "Vorbereitete statementen verwenden" in den Modus "Bad" wechseln. In JDBC wird der Code neu geschrieben.