2 Stimmen

Ist iBatis die richtige Wahl für dynamische SQL-Abfragen?

Ich stehe vor folgendem Gestaltungsproblem:

  • Es wird mehrere vorbereitete SQL-Anweisungen geben, bei denen die WHERE-Klausel definierte Einschränkungen enthält, bei denen die Werte auf der Grundlage von Benutzereingaben dynamisch sein werden.
  • Außerdem sind einige SQL-Anweisungen erforderlich, die ziemlich komplex sein können, aber die sich daraus ergebende SELECT-Klausel) ist immer noch ziemlich einfach zu handhaben.

Soweit ich weiß, würde iBatis diese Anforderungen erfüllen.

  • Was geschieht nun in einem Szenario, in dem der Benutzer (über eine Benutzeroberfläche) Einfluss auf die gesamte Abfragekonstruktion nimmt und die Abfragen auf Ad-hoc-Basis erstellt?

Eine vorbereitete Anweisung kann dies nicht leisten, da die gesamte WHERE-Klausel dynamisch ist. Wir könnten sogar Aggregationsklauseln oder sogar Subselects in die SQL-Funktionen eingebaut haben.

Würden Sie in Anbetracht all dieser Überlegungen immer noch iBatis verwenden oder eine andere kundenspezifische Entwicklung als die beste Architektur angesichts der oben genannten Anforderungen durchführen?

3voto

Bala Punkte 4147

Die neueste Version von iBatis (MyBatis) ermöglicht es uns, leistungsstarke OGNL-basierte Ausdrücke für die Erstellung dynamischer Abfragen zu verwenden. Eine der leistungsfähigsten Funktionen von iBATIS waren schon immer seine dynamischen SQL-Funktionen.

2voto

James Drinkard Punkte 14572

In diesem Fall würde iBatis funktionieren. Wir haben genau das gleiche Szenario, das Sie beschrieben haben, mit iBatis durchgeführt, um dynamische Ad-hoc-Abfragen auf der Grundlage von Benutzerauswahlen auf der Benutzeroberfläche zu erstellen. Die Komplexität entstand, als die Anzahl der Benutzerelemente, die zur Verfügung gestellt wurden, von Seite zu Seite zunahm, aber es ist machbar.

Hibernate ist ein voll funktionsfähiges ORM, das eine weitere offensichtliche Option ist, aber es ist komplexer in der Anwendung. Hier sind einige Links zur Hilfe:

Dynamische Abfragen mit Hibernate

StackOverflow-Frage zu dynamischen Abfragen mit Hibernate

Ich würde also iBatis als erste Wahl oder Hibernate als Lösung wählen. Ich denke, bei der Komplexität würde eine benutzerdefinierte Lösung zu leicht zu einer Menge verschlungenen, verschachtelten Codes führen, es sei denn, man denkt zuerst über das gesamte Design nach. Vorausgesetzt natürlich, dass sich die Anforderungen im Laufe des Projekts nicht ändern.

Ich denke, dass iBatis es Ihnen ermöglichen würde, den Sql-Code besser zu organisieren und Flexibilität im Design anstelle von zukünftigen Änderungen zu ermöglichen. IMHO.

1voto

Saket Punkte 44477

Ich würde für iBatis stimmen. Ich fand es immer am besten, wenn Sie komplexe SQL-Abfragen ausführen müssen (insbesondere eine Reihe von JOINs und SUB-selects), die zu einer trivialen Ergebnismenge führen.

Wenn Sie iBatis verwenden, haben Sie viel mehr Kontrolle über SQL und können auch bestehende Datenbanken integrieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X