6 Gründe warum man PL/SQL Packages verwenden sollte

Package

..is an encapsulated collection of related program objects stored together in the database. Program objects are procedures, functions, variables, constants, cursors, and exceptions.

(c) Oracle Dokumentation

Als ich angefangen habe PL/SQL zu lernen, stellte ich die Frage: „Was ist eigentlich der Sinn von Packages?“.
Wenn in PL/SQL eigenständige Prozeduren und Funktionen existieren, wozu benötigt man dann Packages?

Mit der Zeit merkte ich, dass in der Entwicklung mit PL/SQL, Packages ein nützliches Konstrukt sind. In diesem Beitrag möchte aus diesem Grund auf einige Aspekte eingehen, warum man in PL/SQL Entwicklung Packages verwenden sollte.

Gründe für die Verwendung von PL/SQL Packages

  1. Verwaltung von Code
  2. Pakete sind Container für PL/SQL-Objekten, wie Unterprogramme, Typen und Variablen. Es besteht die Möglichkeit in einem Package alle Möglichen Prozeduren und Funktionen zusammenzufassen, dann verliert Package aber seinen tatsächlichen Sinn und Zweck. In Packages sollen also nur Themen ähnliche oder verwandte PL/SQL-Objekte zusammengefast werden.
    So können z.B. in einem Package Funktionen zum Verwalten der Kunden zusammen gefasst werden (add_customer, del_customer, get_customer, mod_customer ..usw..).

  3. Einfacher (top-down) Anwendungsdesign
  4. Eine wichtige Eigenschaft eines Packages ist die Trennung zwischen seiner öffentlichen Schnittstelle (Spezifikation oder specs) und der Implementierung (Body). Man kann die Spezifikation eines Packages entwickeln und kompilieren, ohne diese implementieren zu müssen. Alles was man für die Arbeit mit abhängigen Komponenten braucht, ist die Schnittstelleninformationen aus der Package Spezifikation. Package und die Module die das Package verwenden werden erfolgreich kompilieren. Das bedeutet, dass Die Schnittstelle für die Entwicklung weiterer Module ,bzw. Programmeinheiten erfolgen, ohne dass die Funktionalität dieser Schnittstelle bereits implementiert wurde. Dies ist von besonderer Bedeutung in der Anwendungsentwicklung von oben nach unten (top-down).

  5. Einfache Code Änderungen
  6. Änderungen in einem Unterprogramm können andere Programme, die es verwenden, invalidieren. Das passiert aber nicht bei Packages. Wenn nur der Code im Package Body geändert wird, müssen die Programme, die das Package verwenden, nicht geändert werden. Es wird nicht ein mal eine erneute Kompilierung erforderlich sein.

  7. Sicherheit und Wartbarkeit durch Information Hiding
  8. Mit Hilfe von Packages kann festgelegt werden, welche Unterprogramme, Typen und Variablen public (sichtbar und außerhalb des Pakets zugänglich) und welche private (nicht sichtbar außerhalb des Packages) sind. Wenn es im Package mehrere Unterprogramme implementiert sind, müssen nicht alle auch nach aussen sichtbar sein (in der Spezifikation auftauchen). Das bedeutet, dass diese für die Programmeinheiten, die das Package verwenden nicht sichtbar und somit aufrufbar sind. Das gewährleistet Integrität und erleichtert die Wartung, da die Änderungen nur Auswirkungen auf das Unterprogramm im Package haben.

  9. Neue Funktionalität: Lebenszeit der öffentlichen Variablen innerhalb der Session
    Öffentlichen Variablen und Cursor bestehen für die gesamte Dauer einer Session. Diese ermöglichen Daten zwischen den Transaktionen in einer Session zu speichern und zu verwenden, ohne es auf der Festplatte persistieren zu müssen. Alle Programmeinheiten, die innerhalb einer Session auf öffentliche Variablen zugreifen, lesen und modifizieren die selben Variablen.
    Dies kann sowohl Vorteile aber auch Nachteile haben und sollte somit mit Vorsicht verwendet werden.

  10. Bessere Performance
  11. Wenn man ein Unterprogramm aus einem Package zum ersten Mal aufruft, wird das gesamte Package in den Speicher geladen. Spätere Aufrufe der Unterprogramme des Packages werden keine Festplattenzugriffe mehr benötigen. Dies führt zu einer besseren Performance.

Ich hoffe, ich konnte hier einige Vorteile für Verwendung der PL/SQL Packages erläutert und empfehle diese der Entwicklung den einzelnen Prozeduren und Funktionen vorzuziehen.
Sollte ich Deine Meinung nach etwas falsch, unvorständig und unklar dargestellt haben, so würde ich mich über ein Kommentar freuen.

Kommentar verfassen