Wie macht man eine Microsoft-Access-Datenbank mit Grails webfähig?

von Peter Soth

Update 19.08.2020 :

Wir fügen diesem Artikel ein kleines Update hinzu, um zu zeigen, dass dieses Thema immer noch aktuell ist. In einem derzeitigen Projekt konnten wir unseren Kunden gleich von Anfang an überzeugen, die Softwareanwendung direkt als web-basierte Lösung umzusetzen. In diesem Fall benutzen wir nicht Grails, sondern Java mit Spring Boot auf der Google Cloud Plattform. Unser Kunde ist mit seiner Softwareanwendung ausgesprochen zufrieden und auch gut für die Zukunft aufgestellt, so sollen nächstes Jahr Lieferanten über eine Online-Schnittstelle integriert werden. Dies wäre mit Microsoft Access nicht möglich gewesen. Rufen Sie uns einfach an, sofern Sie Fragen in diese Richtung haben. Ein erstes Beratungsgespräch ist natürlich kostenlos.

Ursprünglicher Artikel :

In einer aktuellen Kundensituation wurden wir angefragt, ob es machbar sei, eine Microsoft-Access-Datenbank mit Hilfe von Grails in eine Web-Applikation zu migrieren. Wir setzen seit Jahren das Grails-Framework erfolgreich ein und einigten uns mit dem Kunden darauf, dies im Rahmen eines Proof-Of-Concepts zu beweisen.

Migration von Microsft-Access nach Microsoft SQL-Server

Die Northwind-Access-Datenbank benutzten wir für unseren Test. Leider ist diese aktuell als .mdb-Datei äußerst schwer zu finden. Als SQL-Skript kann man sie bspw. von hier [1] heruntergeladen. Wir wurden schließlich doch noch fündig [2]. Der MDB-Viewer [3] eignet sich, um die Tabellen anzuschauen. Es ist indes besser, die MS-Access Runtime inkl. Viewer zu installieren [4]. Für den Import der MS-Acess-Db gibt es verschiedene Tools. Hierbei ist darauf zu achten, dass die Relationen (Kardinalitäten) zwischen den Tabellen mit importiert werden. Hierfür bietet sich der Microsoft SQL Server Migration Assistant for Access an. Diesen haben wir nicht mehr auf der Microsoft-Homepage gefunden, jedoch hier [5]. Der Import-Prozess ist selbsterklärend. Das Bild unten zeigt das Datenbank-Schema im SQL Server.

Reverse-Engineering der Grails-Applikation

Die Grails Applikation wurde mit dem Grails Database Reverse Engineering Plugin von Burt Beckwith [6] migriert. Der benötigte JDBC-Treiber (sqljdbc4.jar), der in das Grails- Lib-Verzeichnis kopiert werden muss, findest sich hier [7]. Das gesamte Grails-Projekt findet sich zu Lernzwecken auf unserem Github-Repository [8]. Dort ist es möglich nachzuschauen, welche Werte in der BuildConfig.groovy, Config.groovy und DataSource.groovy gesetzt wurden.

Das Bild unten zeigt das Grails-Domain-Modell. Es sieht analog zu obigem ER-Modell aus.

Folgendes sollte bei der Migration beachtet werden: 

  • Leerzeichen aus Tabellennamen entfernen
  • Alle Attribute in Kleinbuchstaben wandeln
  • Umwandlung von Serializable in String
  • M:N Relationen müssen potentiell manuell aufgelöst werden
  • Die Tabellenspalten werden durch das Grails-Scaffolding zufällig ausgewählt und können später angepasst werden
  • Etwaige Business-Logic, die in MS-Access implementiert wurde kann nicht automatisch migriert werden

Fazit

Das Bild unten zeigt die MS-Access-Northwind-Datenbank im Original und darunter die migrierte Grails Applikation.

 

Original
migrierte Grails Applikation

Mit dem Plugin ist es ausgesprochen einfach, eine Microsoft-Access-Datenbank in eine Grails-Applikation zu wandeln. Obige Screenshots zeigen meines Erachtens sehr ausdrucksstark das gelungene Ergebnis.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert

Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close