W e b d e s i g n | Rapid Java mit XDEV 3 Datenbanken ohne SQL In Teil 2 der Rapid-Java-Serie erfahren Sie, wie einfach Sie mit XDEV 3 Datenbankanwendungen völlig ohne Java und SQL-Know-how erstellen können. X DEV 3 ist die erste professionelle JavaEntwicklungsumgebung für Rapid Application Development (RAD). Die IDE besticht durch eine einfache Arbeitsweise, die man von Java bislang nicht für möglich gehalten hat. Mit XDEV 3 lassen sich sowohl Web-Anwendungen (Rich Internet Applications) als auch klassische Desktop-Applikationen entwickeln, welche automatisch unter Windows, Linux und auf dem Mac lauffähig sind. XDEV 3 ist für Windows, Linux und Mac OS-X frei verfügbar. Die aktuelle Version sowie die neuesten Up- Datenbank-Tabellen lassen sich als virtuelle Tabellen importieren, die das Abfrageergebnis aufnehmen können. 46 dates stehen Ihnen unter der Webadresse www.xdev-software.de zur Verfügung. Im ersten Teil haben wir uns mit der Umsetzung grafischer Java-Oberflächen beschäftigt. Im zweiten Teil dreht sich alles um die Anbindung von Datenbanken und wie man Daten auf den Bildschirm bringt. Wir empfehlen Ihnen den folgenden Workshop Schritt für Schritt mitzumachen, denn Sie werden ein Highlight nach dem anderen und JavaEntwicklung erstmals in beeindruckender Einfachheit erleben. Die folgenden Beispiele hätten bis vor Kurzem nur erfahrene JavaProgrammierer umsetzen können. Mit XDEV 3 geht das alles jetzt per Drag & Drop. Die Anbindung von Datenbanken ist mit XDEV 3 simpel. Wer bereits Erfahrungen mit Tools wie Microsoft Access, FoxPro, Filemaker, Oracle Forms etc. besitzt, wird auch mit XDEV 3 auf Anhieb zurechtkommen. Denn die Arbeitsweise ist verblüffend ähnlich. XDEV 3 unterstützt alle wichtigen Datenbanken, unter anderem Access, DB2, Oracle, MS SQL-Server, MySQL und PostgreSQL. Für die folgenden Beispiele verwenden wir jedoch die mitgelieferte HSQL-Testdatenbank, um einen kleinen Stammdaten-Editor für eine Kfz-Verwaltung aufzubauen. HSQLDB ist eine freie JavaDatenbank-Engine, die auch in OpenOffice Verwendung findet. Darüber hinaus unterstützt XDEV 3 alle wichtigen Datenbanken wie Access, DB2 oder Informix. Datenbanken anbinden Nachdem Sie XDEV 3 installiert und gestartet haben, legen Sie jeweils über das Menü Datei ein neues Projekt, danach ein neues Fenster start im Ordner Fenster und dann eine neue Datenquelle an. Nennen Sie diese im folgenden Dialog kfzDB, wählen Sie den Ordner Datenquellen und das Plugin HSQL 2 JDBC aus und klicken Sie auf OK. Wählen Sie im folgenden Verbindungs-Assistenten bei Datenbankname die mitgelieferte Beispieldatenbank kfz aus, und klicken Sie auf Aktualisieren, um die Verbindung zur Datenbank herzustellen. Anschließend werden die Tabellen und hinterlegten Entity-Relations angezeigt. Falls vorhanden, werden auch Views und Stored Procedures hier angezeigt. Der Javacode für die Datenquelle wird im Hintergrund automatisch generiert. Klicken Sie jetzt auf Speichern. Datenbank und GUI Ziehen Sie nun alle Tabellen per Drag & Drop auf den Ordner Virtuelle Tabellen im Projektmanagement und bestätigen jeweils die CamelCase-Namensanpassung. Dadurch wird von allen Datenbanktabellen eine Kopie ohne Daten erzeugt, die als "virtuelle Tabellen" bezeichnet werden. Eine virtuelle Tabelle bildet in einer Anwendung sozusagen das Gegenstück einer Datenbanktabelle und dient zur Aufnahme des Abfrageergebnisses (Resultset). Damit lassen sich die Daten völlig unkompliziert zwischen Datenbank und Anwendung übertragen. Virtuelle Tabellen erfüllen zudem noch einen weiteren Zweck: Sie dienen als direkte Datenquelle (Swing Model) für sämtliche Oberflächen-Elemente 0611 internet magazin Rapid Java mit XDEV 3 Sämtliche Assistenten und Code-Generatoren lesen die Relationen aus dem ER-Diagramm aus. Die Relationen lassen sich sowohl importieren als auch exportieren. (View). Virtuelle Tabellen bilden somit das Verbindungsstück (Databinding) zwischen GUI und Datenbank. Das Virtuelle-TabellenKonzept befreit den Entwickler vollständig von JDBC-Programmierung, der Verarbeitung von Resultsets und dem Erzeugen von Swing Models und Renderer für die unterschiedlichen GUI-Komponenten. Damit vereinfacht XDEV 3 die Datenbank- und GUI-Programmierung in Java radikal und erspart dem Entwickler eine Menge CodierArbeit und Entwicklungszeit. ER-Diagramm Importieren Sie nun die Entity-Relations, indem Sie diese einfach per Drag & Drop auf den Ordner Datenquellen im Projektmanagement ziehen. Klicken Sie den neuen Eintrag an, um das erzeugte ER-Diagramm aufzurufen. Das ER-Diagramm zeigt die Verbindungen (Relationen) zwischen den Tabellen an. Es dient nicht nur der Dokumentation des Datenmodells, sondern wird vor allem von verschiedenen Funktionen und Assistenten zum Auslesen der Relationen benötigt, um sämtliche Abfragen automatisch generieren zu können. Automatisierte Datenbanken Virtuelle Tabellen sind bereits standardmäßig mit Abfragelogik ausgestattet, sodass Sie für einfache Queries keinen SQL-Code schreiben müssen. Durch Verknüpfen einer Virtuellen Tabelle mit einem GUI-Element wird die dazugehörige Datenbanktabelle automatisch abgefragt und die Daten werden auf der Oberfläche ausgegeben. Wählen Sie für den ersten Datenbankzugriff das Fenster start an und ziehen Sie dieses möglichst groß. Um eine skalierbare internet-magazin.magnus.de |Webdesign Statements werden automatisch generiert. Das Abfrageergebnis wird anschließend in die virtuelle Tabelle geschrieben. Durch die Verknüpfung von virtueller Tabelle und Table werden die Daten automatisch auf der Oberfläche ausgegeben. Die dafür notwendigen Renderer, Editoren und SwingModel-Wrapper werden von XDEV 3 zur Verfügung gestellt, sodass man diese nicht wie üblich selbst programmieren muss. Automatische Joins Oberfläche mit Einzelfenster aufzubauen, vergeben Sie dem Fenster zuerst ein BorderLayout. Klicken Sie dazu in den Eigenschaften bei Layout auf das Pfeil-Symbol und wählen das BorderLayout aus. Ziehen Sie nun die Komponente XdevDesktopPane aus der Palette so in das Fenster, dass dieses komplett ausgefüllt wird. Fügen Sie jetzt die Komponente XdevInternalFrame ein, verbreitern Sie dieses etwas und vergeben Sie dem InternalFrame über die Eigenschaft Layout ebenso ein BorderLayout. Ziehen Sie nun die Komponente XdevTable so in das InternalFrame, dass es vollständig ausgefüllt wird. Ziehen Sie jetzt die virtuelle Tabelle Fahrzeuge aus dem Projektmanagement auf die Table. Um die Vorschau im Browser auszuführen, wählen Sie im Menü Ausführen, Startkonfiguration. Klicken Sie im folgenden Dialog auf Applet, dann auf das Neu-Symbol, geben Sie bei Name "kfz-Beispiel" ein, wählen Sie die Option Vollbild an und beenden Sie mit OK. Zum Starten klicken Sie nun den kleinen Pfeil beim ersten Play-Symbol und dann auf kfz-Beispiel. Später müssen Sie nur noch auf Play klicken. Die für die Abfrage notwendigen SQL Da bei relationalen Datenbanken die Daten in der Regel über mehrere Tabellen verteilt und mithilfe eines Schlüssels miteinander verknüpft sind, werden Abfragen einzelner Tabellen meist nicht ausreichen, wie das Beispiel zeigt. Aber auch Abfragen über mehrere Tabellen können direkt von einer virtuellen Tabelle durchgeführt werden. Beenden Sie die Vorschau und klicken Sie die virtuelle Tabelle Fahrzeuge im Projektmanagement an, um diese im Tabellen-Assistenten zu bearbeiten. Klicken Sie in der zweiten Zeile der XDEV-3-Symbolleiste das letzte Icon Beziehungen auflösen an. Mit dieser Maßnahme wird die virtuelle Tabelle bei jeder Spalte, die einen Primärschlüssel (z.B. MODELL_ID) enthält, um eine Hilfsspalte erweitert. Da die Relationen im ER-Diagramm dokumentiert sind, kann die virtuelle Tabelle nun alle verknüpften Werte automatisch hinzujoinen, sodass anstelle von unlesbaren Primärschlüssel (z.B. MODELL_ID = 110) nur noch lesbare Werte in der Tabelle erscheinen (z.B. MODELL = Twingo). Um auch den noch fehlenden Hersteller mit anzuzeigen, muss eine weitere Hilfsspalte manuell eingefügt werden, da Hilfsfelder nur für direkte Relationen generiert werden können. Öffnen Sie im Projektmanagement Die Browser-Vorschau lässt sich mit wenigen Klicks konfigurieren. 47 W e b d e s i g n | Rapid Java mit XDEV 3 bei der Tabelle Hersteller den Zweig und ziehen Sie die Spalte MARKE in den Tabellen-Assistenten über die Spalte MODELL_ID der virtuellen Tabelle Fahrzeuge. Wechseln Sie zurück zum Fenster und starten Sie die Anwendung erneut. Master-Detail-Ansichten Damit es bei großen Datenbeständen nicht zu einem Speicherüberlauf kommt, sollte ein Suchergebnis grundsätzlich eingegrenzt werden. Eine in der Praxis recht beliebte Methode sind Master-Detail-Ansichten. Diese bestehen aus zwei oder mehr GUIKomponenten. In der ersten Komponente (Master) wird eine Kategorie ausgewählt, während in einer zweiten Komponente (Detail) alle zugehörigen Daten angezeigt werden. Die Konstruktion wird aus einer 1:n-Beziehung zwischen zwei Tabellen abgeleitet, beispielsweise Hersteller und Modelle. Mit XDEV 3 lassen sich MasterDetail-Ansichten mit nur wenigen Mausklicks umsetzen. Dazu muss lediglich bei der Detail-Komponente die dazugehörige Master-Komponente hinterlegt werden. Die gesamte Abfrage- und Aktionslogik wird anschließend automatisch generiert. Beenden Sie die Vorschau und fügen Sie ein zweites InternalFrame ein. Fügen Sie in dieses dann eine Table (Master) und daneben eine zweite Table (Detail) ein. Um die Tabellen mit Daten zu füllen, ziehen Sie die virtuelle Tabelle Hersteller auf die MasterTable. Ziehen Sie dann die virtuelle Tabelle Modelle auf die Detail-Table. Legen Sie jetzt die Master-Detail-Beziehungen fest. Klicken Sie zuerst die Tabelle Fahrzeuge an, dann in den Eigenschaften bei Master-Komponente das Pfeilsymbol und wählen Sie als Master die Tabelle Modelle. Klicken Sie nun die Tabelle Modelle an, dann in den Eigenschaften bei Master-Komponente das Pfeilsymbol und wählen Sie als Master die Tabelle Hersteller an. Damit können Sie das Beispiel testen. Unerwünschte Spalten lassen sich im Tabellen-Assistenten ausblenden. Suchformulare und Filter Noch genauer und komfortabler lässt sich eine Abfrage mithilfe eines Suchformulars 48 Beeindruckende Funktionalität bei so geringem Entwicklungsaufwand. So einfach war Java-Entwicklung noch nie. eingrenzen. Beenden Sie die Vorschau und fügen Sie ein drittes InternalFrame ein, vergrößern Sie dieses auf 400 x 400 Pixel und vergeben Sie auch diesen über die Eigenschaft Layout ein BorderLayout. Ziehen Sie nun die virtuelle Tabelle Fahrzeuge in die Arbeitsfläche, um daraus ein Formular generieren zu lassen. Wählen Sie im folgenden Assistenten den Button Speichern ab und klicken Sie auf OK. Nun können Sie die Table Fahrzeuge mit dem Formular verknüpfen. Klicken Sie dazu die Table Fahrzeuge an, danach in den Eigenschaften bei Verbundenes Formular auf das Pfeilsymbol und wählen Sie dann das Formular an. Durch diese Verknüpfung wird später ein in der Table selektierter Datensatz automatisch in das Formular übertragen, wo er editiert werden kann. Fügen Sie rechts neben den Formular-Buttons einen weiteren Button ein und benennen Sie diesen mit Suchen. Um ein MausklickEreignis zu hinterlegen, klicken Sie im gelben Quickinfo-Feld des Buttons auf Ereignisse und dann auf actionPerformed. Daraufhin wechselt XDEV 3 in die Code-Ansicht und generiert den Event-Handler automatisch für Sie. Der Editor befindet sich standardmäßig in der Partial-View Ansicht. Diese zeigt immer nur den Code der aktuellen Funktion. Der restliche, generierte Code bleibt für eine bessere Übersicht ausgeblendet. Vor allem Java-Einsteiger behalten dadurch viel leichter die Übersicht. Erfahrene Entwickler können diesen Modus jederzeit abschalten, um stets Sicht auf den gesamten Code zu haben. Geben Sie nun die Anweisung formular. search(„AND“, table); ein, mit der die Formularsuche aufgerufen wird. Danach können Sie schon wieder in den GUI-Builder zurückkehren und das Beispiel testen. Zur Laufzeit generiert die Search-Methode alle Filterbedingungen (Where-Condition) für das Formular, verknüpft diese mithilfe des logischen UND Operators, setzt die Query inklusive sämtlicher Joins ab und gibt anschließend sogar das Abfrageergebnis in der Tabelle aus, sodass man sich um nichts mehr kümmern muss. Suchformulare lassen sich kaum mehr einfacher konstruieren. Das Formular lässt sich nun individuell anpassen, indem Sie einfach entsprechende Formular-Elemente entfernen oder bei Bedarf hinzufügen, beispielsweise um damit auch eine Suche in Zeiträumen und Wertebereichen möglich zu machen. Beenden Sie die Vorschau und duplizieren Sie dazu die Formularzeile bei KILOMETERSTAND. Klicken Sie dazu zuerst das Label KILOMETERSTAND an, dann mit gedrückter Shift-Taste auf das Eingabefeld daneben und klicken Sie schließlich in der oberen Symbolleiste auf das 0611 internet magazin ANZEIGE Symbol Klonen. Benennen Sie nun die Beschriftungen der Labels um in KM VON und KM BIS. Klicken Sie das erste Textfeld bei KM VON an und wählen Sie in den Eigenschaften bei Operator für Bedingung den SQL-Operator >= aus. Wählen Sie abschließend beim zweiten Textfield den Operator <= aus und starten Sie das Beispiel. Komplexere Abfragen Für noch komplexere Abfragen bietet XDEV 3 einen komfortablen Query-Assistenten, mit dem man sich Joins und sämtliche Abfragebedingungen per Hand zusammenklicken kann. Auch alle wichtigen Aggregatfunktionen sowie Gruppierung, Sortierung und Limits werden unterstützt. Sehr innovativ ist die Abbildung logisch verknüpfter Bedingungen, die untereinander dargestellt werden. Anstatt Klammern zu setzen, werden die Editoren eingerückt, wodurch auch bei zahlreichen Bedingungen die Übersicht erhalten bleibt. Als Parameter können im Assistent auch Variablen und Methodenaufrufe angegeben werden. Der Assistent wird mit der Anweisung XDEV.Query(); aufgerufen. Der generierte Code besteht aus Java-Objekten, die sich sowohl mit dem Assistenten als auch direkt im Editor bearbeiten lassen. Erst zur Laufzeit werden die Statements in SQL umgewandelt. Eigene SQLs absetzen Wie alle RAD-Features müssen auch sämtliche Datenbankfunktionen, die XDEV 3 zur Verfügung stellt, nicht zwingend verwendet werden. Wer seine Abfragen lieber direkt in SQL formulieren möchte, kann mit XDEV 3 auch SQL-Strings absetzen oder dynamisch generieren lassen. Dafür stellt die XAPI in der Klasse DBUtils die Methode query() zur Verfügung. Das Abfrageergebnis wird damit wahlweise als Resultset-Objekt oder virtuelle Tabelle zurückgegeben. Auch OR-Mapper wie Hibernate lassen sich einbinden. Ergänzend zu den im Workshop beschriebenen Suchvarianten stellt die XDEV Component Suite weitere Komponenten und Funktionen für Datenbankapplikationen zur Verfügung, unter anderem Datagrids, Paging, Paging, Lazy-Loading und Quickfinder. Fazit Mit XDEV 3 lassen sich individuelle Datenbankanwendungen auf Basis von Java einfach umsetzen. Der Umfang an Datenbankfunktionen ist gewaltig und die Zeiteinsparung im Vergleich zur klassischen Java-Programmierung enorm. Durch die an 4GL-Tools wie Access, FoxPro oder Filemaker angelehnte Arbeitsweise vereinfacht XDEV 3 die Datenbankprogrammierung mit Java. Auch Anwender ohne Java-Kenntnisse kommen auf Anhieb zurecht, sodass mit XDEV 3 ein Umstieg auf Java sofort möglich ist. Die mit XDEV 3 erstellten Projekte lassen sich nicht nur als klassische Java-DesktopApplikation fertigstellen, sondern auch über das Internet aufrufen und als Rich Internet Applications im Browser ausführen. Das macht XDEV 3 auch für Web-Entwickler interessant, die sich nicht mit AJAX-Frameworks und Browser-Inkompatibilitäten herumschlagen möchten. Gerald Kammerer / ds internet-magazin.magnus.de KLarheit bei der stUdienwahL Der Übergang von der Schule ins Studium ist oft steinig. Denn viele Jugendliche wissen nicht, was sie überhaupt studieren sollen. Die Beratungsfirma Campusmondi hilft umfassend bei der Auswahl des richtigen Studiengangs. Welchen Weg soll mein Kind nach dem Abitur einschlagen? Welche Studien- und Ausbildungsmöglichkeiten bieten sich in Deutschland und dem Ausland an? Und wie sieht es mit der Studienfinanzierung aus? Das sind nur einige der Fragen, die sich besorgte Eltern tagtäglich stellen. Um etwas Licht ins Dunkel zu bringen, werden deshalb immer wieder Beratungsstellen aufgesucht. Doch meist sind die Angebote – wie bei der Agentur für Arbeit – nur begrenzt. Umfassende Hilfestellung kann deshalb nur ein professioneller Berater leisten. Denn nur er hat einen kompletten Überblick über die Hochschullandschaft und weiß, welche Unterschiede zwischen den einzelnen Universitäten bestehen. Zudem kann er umfassend über Karriere- und Einstiegsmöglichkeiten nach dem Studium beraten. Die Berliner Beratungsfirma Campusmondi ist ein solcher Dienstleister. In mehr als zehn Jahren hat das Unternehmen unter der Leitung von Geschäftsführer Matthias Trüper weit über tausend Jugendliche erfolgreich beim Übergang von der Schule ins Studium beraten und ebenso Studienabbrechern zu neuen Perspektiven verholfen. Umfassende LeistUngen Alle Beratungen bei Campusmondi beginnen mit einem eingehenden persönlichen Gespräch, dem je nach Bedarf weitere Treffen folgen. Campusmondi berät in allen großen deutschen Städten sowie in Norditalien, der Schweiz und Österreich. Die Dienstleistungen von Campusmodi sind kostenpflichtig, die Höhe entspricht jedoch nur einem Teil jener Kosten, die etwa in den USA für diese Beratung verlangt wird. Campusmondi-Kunden finden sich übrigens an vielen deutschen Fachhochschulen und Universitäten sowie an vielen bekannten Universitäten in den USA, Großbritannien, Kanada und auch in zahlreichen europäischen Ländern. Weitere Informationen finden Sie unter www.campusmondi.com