Java - Vermeiden langer SQL-Abfragen im Code

9

In meinem Java-Code habe ich so etwas:

%Vor%

Ich möchte meinen Code so aufräumen:

%Vor%

Ich habe gelesen, dass ResourceBundle für die Lokalisierung ist. Also ich denke nicht, dass es in meinem Fall passt.

Was sollte all_queries sein?

BEARBEITEN: Das Wichtigste für mich ist, den Code aufzuräumen.

    
Stephan 25.07.2011, 11:06
quelle

8 Antworten

11

Ich würde es in eine Datei mit einer SQL-Erweiterung einfügen und Queries like:

implementieren %Vor%

Benutzer:

%Vor%

Das ist natürlich nur eine Möglichkeit. Sie können Queries return Statement verwenden oder sogar einen dynamischen Proxy verwenden, um ihn hinter einer einfachen Java-Schnittstelle zu maskieren (wobei der Proxy-Handler eine Anweisung erstellen, Parameter setzen und eine Abfrage ausführen könnte). Ihre Laufleistung kann variieren.

Zusätzlicher Vorteil: SQL-Dateien haben eine Syntaxfarbe und sind Weise einfacher zu verwalten als Strings in Java.

    
Konrad Garus 25.07.2011, 11:34
quelle
3

Datenstrukturperspektive

Da Sie eine Zuordnung von einem Schlüssel (Name) zu einem Wert (lange Abfrage) benötigen, was mit einem Wörterbuch (auch bekannt als map) erreicht wird , assoziatives Array) Datenstruktur.

Halten Sie Ihre Konfiguration von Ihrem Code fern

Sie sollten Ihre Konfiguration in einer Datei getrennt von Ihrem Code speichern. Ich empfehle das Konfigurationsformat .ini , das sehr gut lesbar ist, in Abschnitte unterteilt werden kann und einen guten Parser für fast jede Computersprache.

Ihre Konfigurationsdatei sieht folgendermaßen aus:

%Vor%

Mit dem ini4j -Modul können Sie Ihre Abfragen so einfach erstellen wie:

%Vor%     
Adam Matan 25.07.2011 11:08
quelle
2

Ich würde sie einfach machen

%Vor%

Die Externalisierung in eine Textdatei wie ein Ressourcenbündel würde funktionieren, aber ich bin nicht davon überzeugt, dass es notwendig ist, oder sogar eine gute Idee, da dies zu einer Denkweise führen könnte, dass diese nicht wirklich "Code" sind Daher müssen Änderungen nicht wirklich getestet werden.

    
djna 25.07.2011 11:12
quelle
1

Eine einfache Lösung wäre, die Datei mit den normalen Eigenschaften zu verwenden. Die Antwort lautet Sauberste Möglichkeit, eine SQL-Zeichenfolge in Java zu erstellen

Das einzige Problem ist, dass die neue Zeile durch "\" getrennt werden muss z.B.

%Vor%

dann können Sie

verwenden %Vor%

Ja, "\" ist immer noch hässlich, aber es ist sauberer und einfacher zu formatieren, verglichen mit der Java String / StringBuilder-Verkettung, imo.


Wenn Sie ein saubereres Format unterstützen möchten, können Sie möglicherweise Ihren eigenen Parser erstellen oder das XML-Format verwenden. Aber ich denke, es ist ein Overkill.

Off topic: Muss Groovy 's mehrzeilige Zeichenfolge (schamlos) lieben:

%Vor%     
Manny 25.07.2011 11:28
quelle
0

Eine HashMap wäre einfach, da Sie von einem Abfragenamen / -schlüssel zu einer Abfrage / einem Wert mappen möchten. Jede Karte würde wirklich funktionieren.

%Vor%

Sie könnten ein Singleton verwenden, wenn Sie es statisch halten möchten.

%Vor%

Oder Sie könnten einfach statische Strings verwenden, wie von djna vorgeschlagen:

%Vor%     
Charles Goodwin 25.07.2011 11:12
quelle
0

Vielleicht liegt das Problem in der Struktur Ihrer Anwendung. Trennen Sie Ihre Java-Klassen in Pakete "dao", "service" usw.?

Wenn Sie Ihr Projekt organisieren, müssen Sie nicht ResultSet rs = statement.executeQuery( all_queries.getQuery("The very long one") ) aufrufen, sondern stattdessen Result res = dao.getSomethingYouNeed(param1, param2, ...);

aufrufen     
Alexey Grigorev 25.07.2011 11:26
quelle
0

Wenn wir mehrere Abfragen in eine Textdatei (nicht in eine Eigenschaftendatei) schreiben, können wir eine einzelne Abfrage von allen abrufen oder abrufen.

    
user2001125 22.01.2013 17:02
quelle
-1

MyBatis macht das sofort und funktioniert wie ein Champion!

    
Nestor Hernandez Loli 07.02.2014 23:22
quelle

Tags und Links