2016-09-14 5 views
0

SQL zu erhalten:Java eine SQL-Ausführung oder eine gespeicherte Prozedur Rufdaten

SELECT * FROM EMP; 
STORED PROC : Returning CURSOR OF SELECT * FROM EMP 

in Java, ich bin mit über zwei Möglichkeiten, Daten aus der DB zu bekommen. Was ist der Unterschied zwischen den oben genannten Ansätzen? Wenn meine Tabelle Millionen von Transaktionen enthält, was ist der beste Weg, dies zu tun? Ich frage mich, ob Orakel Daten in einem Objekt kapselt und es an Java sendet?

Ich versuche eher zu verstehen, wie Daten von Oracle zu Java fließen. Ob es sich um einen Stream über das Netzwerk oder eine Anfrage/Antwort handelt.

Eine andere Frage, wenn ich diese Millionen Transaktionen in eine Datei geschrieben haben möchte, spulen Sie die Daten in Oracle (Same-Maschine) oder holen Sie diese Daten zu Java und erstellt eine Datei? Welche gibt die bessere Leistung?

Also, Sie könnten verstehen, meine Anforderung ist so einfach wie Daten aus DB zu bekommen und in eine Datei zu schreiben! Aber meine Tabelle enthält Millionen von Transaktionen, die mich um die Leistung kümmern. Ich möchte Java verwenden, um die Daten (in eine Datei geschrieben) und Oracle zu präsentieren, um die Daten zu ziehen und zu Java zu senden. Auf diese Weise behalte ich meine SQL-Anweisungen nicht in Java-Dateien.

Antwort

0

Im Allgemeinen werden gespeicherte Prozeduren schneller ausgeführt, da sie näher an der Datenbank-Engine und den Daten sind.

Aber Sie sollten wahrscheinlich einen Schritt zurück machen: Ich denke nicht, dass es eine gute Idee ist, eine Anwendung zu schreiben, um eine Liste von 1 Million Transaktionen anzuzeigen. Das gilt unabhängig davon, ob es sich um eine Webseite oder eine Konsolenanwendung handelt.

Schreiben Sie stattdessen eine gespeicherte Prozedur, um Ihre Daten in eine Textdatei auszugeben. Wählen Sie die Spalten, die Sie wirklich brauchen, anstatt SELECT * zu machen.

Es sollte selbstverständlich sein, dass Sie bezüglich der Datensicherheit vorsichtig sein sollten. Wenn es sich um finanzielle oder andere sensible Transaktionen handelt, sollten Sie sehr vorsichtig sein, unverschlüsselte Daten in eine Textdatei zu packen, die einfach weitergegeben werden kann.

Zurück zu Ihrer ersten Frage, und angenommen, Ihre Antwort wird höchstens vielleicht 1000 Datensätze sein, können Sie entweder die gespeicherte Prozedur ausführen oder die Abfrage in Ihren Java-Code einfügen. Wenn Sie es in den Java-Code einfügen, isolieren Sie den DB-Zugriff so weit wie möglich von Ihrem Präsentationscode und Ihrer Business-Schicht.

Wenn Sie mehr als 100 Datensätze oder so haben, werden Sie wahrscheinlich eine seitenweise Anzeige der Daten wünschen.

In den meisten Fällen sind die Leistungsunterschiede für ein reales Problem/Lösung nicht so groß. Ihr Gesamtdesign und Ihre Benutzerfreundlichkeit werden wahrscheinlich wichtiger sein.

Verwandte Themen