Gespeicherte Prozeduren sind ein Ort, an dem Code (SQL) abgelegt werden kann, der auf der Datenbank ausgeführt wird. Daher verstehe ich die Frage so:
Gibt es eine andere Möglichkeit, den Code, der auf der Datenbank ausgeführt wird, zu paketieren?
Es gibt mehrere Antworten:
Ja. Sie können dynamische SQL verwenden, aber ich persönlich mag gespeicherte Prozeduren besser.
1) Wenn Sie MS SQL Server verwenden, wird ein Abfrageplan erstellt, der die Ausführung der gespeicherten Prozedur schneller als einfache dynamische SQL ermöglichen soll.
2) Es kann einfacher und effektiver sein, einen Fehler in einer gespeicherten Prozedur zu beheben, insbesondere wenn Ihre Anwendung diese Prozedur an mehreren Stellen aufruft.
3) Ich finde es gut, die Datenbanklogik in der Datenbank zu kapseln und nicht in einer eingebetteten SQL- oder Anwendungskonfigurationsdatei.
4) Das Erstellen einer gespeicherten Prozedur in der Datenbank ermöglicht es dem SQL-Server, einige Syntax- und Validierungsprüfungen zur Entwurfszeit auszuführen.
Hibernate ist ein Objekt / relationaler Persistenzdienst.
Gespeicherte Prozedur ist eine Subroutine in einem relationalen Datenbanksystem.
Nicht dasselbe.
Wenn Sie eine Alternative zum Ruhezustand möchten, können Sie nach iBatis für den Frühling
suchenSie können dynamisches SQL so sicher und schnell ausführen, wie gespeicherte Prozeduren sein können, es braucht nur etwas Arbeit. Natürlich braucht es etwas Arbeit, um gespeicherte Prozeduren sicher und schnell zu machen.
Eine gespeicherte Prozedur ist eine Subroutine verfügbar für Anwendungen, die auf a zugreifen relationales Datenbanksystem. Gelagert Prozeduren (manchmal als Proc bezeichnet, sproc, StoPro oder SP) sind eigentlich in den Datenbankdaten gespeichert Wörterbuch.
Typische Verwendung für gespeicherte Prozeduren inkl. Datenvalidierung (integriert in die Datenbank) oder Zugriffskontrolle Mechanismen. Darüber hinaus gespeichert Verfahren werden verwendet, um zu konsolidieren und Logik zentralisieren, die ursprünglich war in Anwendungen implementiert. Groß oder komplexe Verarbeitung, die erforderlich sein könnte die Ausführung von mehreren SQL Anweisungen werden in gespeichert verschoben Verfahren und alle Anwendungen aufrufen nur die Verfahren.
Gespeicherte Prozeduren sind ähnlich wie benutzerdefinierte Funktionen (UDFs). Das Hauptunterschied ist, dass UDFs sein können benutzt wie jeder andere Ausdruck darin SQL-Anweisungen, während gespeichert Prozeduren müssen mit dem aufgerufen werden CALL-Anweisung
.. von Wikipedia
Ich denke, Sie müssen diesen Artikel lesen und Ihre Frage neu gestalten. Hibernate hat nichts mit gespeicherten Procs zu tun.
Es würde ein wenig mehr helfen, wenn Sie sagen würden, warum Sie nach Alternativen suchen, Was ist mit gespeicherten Procs, die du nicht magst?
Einige Datenbanken (zB PostgreSQL) erlauben Ihnen auch, gespeicherte Prozeduren zu schreiben verschiedene Sprachen. Also, wenn Sie wirklich wollen, können Sie sie in Python schreiben oder Java oder ähnliches anstelle von SQL.
Hmm, scheint mir die offensichtliche Alternative zu gespeicherten Prozeduren zu sein, Anwendungscode zu schreiben. Anstatt beispielsweise eine Geschäftsprozedur zu schreiben, um jedes Mal, wenn ein Guthaben gebucht wird, ein Soll zu buchen, könnten Sie einen Anwendungscode schreiben, der beide schreibt.
Vielleicht bin ich hier zu einfach oder verpasse den Punkt der Frage.
Ich denke, das OP bedeutet, dass eine Alternative zum Schreiben seines gesamten Datenbankcodes direkt in seinen Anwendungscode entweder gespeicherte Prozeduren aufrufen oder eine Trennungsschicht zwischen seinem Anwendungscode und der Datenbank mit einem ORM wie Hibernate, aber ja, einführen soll Sie sind sehr unterschiedliche Dinge.
Wenn Sie gespeicherte Prozeduren verwenden, können Sie SQL an einer Stelle getrennt von Ihrem Anwendungscode aufbewahren. Durch die Verwendung von Hibernate können Sie das vollständige Schreiben von SQL vermeiden und eine Objektdarstellung der relationalen Datenbank bereitstellen.
Welcher Weg Sie gehen, hängt viel von der Anwendung und Ihren eigenen Vorlieben ab.
Tags und Links database stored-procedures