Speichern und Abrufen von XML-Daten in Sybase mit Java-Custom-Klassen

Die Element-Speicherung ist die Methode, mit der Sie Elemente aus XML-Dokumenten extrahieren und sie im standardmäßigen SQL-Spalten- und Zeilenformat abspeichern. Dies ermöglicht SQL Abfragen aus herkömmlichen Anwendungen, die nicht XML-fähig sind, um auf die Daten nach standardmäßiger SQL-Art zuzugreifen. Der Nachteil bei diesem Ansatz besteht darin, dass die Datenelemente aus dem XML-Dokument extrahiert werden müssen, bevor sie gespeichert werden können. Wenn die Daten erneut im XML-Format zusammengestellt werden müssen, kann dieser zusätzliche Schritt eine erhebliche Mehrbelastung bedeuten.

Schauen wir uns nun an, wie eine current_orders-Tabelle für die Elemente angelegt wird, diese Elemente aus einem OrderXml-Dokument extrahiert werden und dann mit den Methoden einer OrderXml-Java-Custom-Klasse innerhalb einer SQL-Tabelle platziert werden.

Die OrderXml-Klasse besitzt ein Konstruktor-Ereignis, das bestätigt, dass eine Zeichenkette ein gültiges OrderXml-Dokument enthält und ein Objekt vom Typ OrderXml zurückgibt. Sie hat auch eine Methode order2Sql, welche die Elemente eines OrderXml-Dokuments übernimmt und sie in der Tabelle platziert, die von der OrderXml-Methode createOrderTable angelegt worden ist:

// Erstellen des OrderXml-Objekts aus dem XML-Dokument

Xml.order.OrderXml ox = new xml.order.OrderXml( doc )

// Anlegen der Tabelle current_orders auf dem Server

xml.order.OrderXml.createOrderTable
( „current_orders“, „test_server:4000?user=sa“ )

// Ausfüllen der Tabelle current_orders mit den im OrderXml-Objekt gefundenen Elementen

ox.Order2Sql( „current_orders“, „test_server:4000?user=sa“)

Wir haben nun eine SQL-Tabelle mit dem Namen current_orders auf dem Server (welche die aus unserem Dokument Order.xml extrahierten Elemente beinhaltet), die den Daten und der Struktur in der von uns zuvor angelegten Tabelle orders entspricht.

Wenn wir aus der Tabelle current_orders ein Orders-Dokument zusammenstellen müssen, haben wir eine Konstruktor-Methode von OrderXml, welche die order_date, customer_id und Login-Informationen als Argumente entgegennimmt und dann JDBC benutzt, um eine SQL-Abfrage zu erstellen. Sie stellt ein OrderXml-Dokument mit den erforderlichen Informationen zusammen und gibt es als OrderXml-Objekt zurück.

// Zusammenstellen eines XML-Dokuments aus einer SQL-Tabelle

xml.order.OrderXml ox = new OrderXml( „990704“, „123“,
„test_server:4000?user=sa“ )

Dokument-Speicherung
Die Dokument-Speicherung ist die Methode, mit der Sie eine einzelne Spalte in einer Tabelle zur Aufnahme des XML-Dokuments erzeugen. Die Spalte kann Text, eine generische Java-Klasse oder eine Java-Custom-Klasse sein (die für die Benutzung mit einem spezifischen, in der Datenbank gespeicherten XML-Dokumenttyp konzipiert ist). Mit normalem SQL kann zwar das Dokument insgesamt eingefügt, aktualisiert oder gelöscht werden, um jedoch Verweise auf die Elemente des Dokuments zu erstellen oder diese zu aktualisieren, benötigen Sie Java.

Diese Methode ist zu bevorzugen, wenn XML immer das geforderte Ausgabeformat der Datenbank ist. Die Mehrbelastung durch das Extrahieren der Elemente aus einem XML-Dokument oder deren Zusammenstellen in einem solchen entfällt.

Die folgende Tabelle ist für die Aufnahme des XML-Dokuments als Java-Custom-Klasse konzipiert:


create table order_docs (id char(10) unique,
order_doc xml.order.OrderXml)

Die Spaltendefinition von order_doc benutzt xml.order.OrderXml, das eigentlich eine Java-Custom-Klasse ist. ASE enthält dieses Beispiel einer Custom-Klasse, die lediglich zeigt, wie flexibel eine Java-VM auf einem Datenbank-Server sein kann.

Die OrderXml-Klasse hat einen Konstruktor, der eine an ihn übergebene Zeichenkette als gültiges XML-Order-Dokument validiert. Anschließend wird ein OrderXml-Objekt zurückgegeben. Diese Objekt ist für die Speicherung in der in unserer Tabelle definierten Spalte geeignet.


Xml.order.OrderXml ox = new xml.order.OrderXml(doc);

Hybrid-Speicherung
Die Hybrid-Speicherung ist die Methode, mit der XML als Dokument (nicht zerlegt) gespeichert wird, doch eine oder mehr Spalten werden aus dem XML-Dokument extrahiert und als normale SQL-Spalten gespeichert. Diese Herangehensweise könnte Anwendung finden, wenn XML die Datenquelle ist und laufend gespeichert wird, wie die Daten hereinkommen. Dies könnte beispielsweise eine einzelne, von einem externen Verkaufssystem hereinkommende Auftragsorder sein, die zu einem späteren Zeitpunkt von customer_id abgefragt werden muss.


create table order_xmldocs
(id char(10) unique,
customer_id varchar(5) not null,
order_date datetime not null,
order_doc xml.order.OrderXml)

Individuelle Erstellung für mehr Leistungsfähigkeit
Die Möglichkeit, individuelle Java-Klassen zu erstellen und diese dann zu benutzen, um Java-Datentypen und SQL-Spalten auf einem Datenbank-Server zu deklarieren, ist eine äußerst leistungsfähige Funktion. Kombiniert mit der Flexibilität, XML-Daten in ihrem ursprünglichen Format zu speichern sowie die Elemente für die Speicherung in normalen SQL-Tabellen zu extrahieren, ermöglicht dies die Flexibilität, wie sie der Markt heute von Enterprise-, E-Commerce- und B2B-Lösungen verlangt.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

16 Stunden ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

16 Stunden ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

1 Tag ago

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

1 Tag ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

2 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

2 Tagen ago